-1

私は、次の方法のどれがより好ましいか、スピードに関して疑問に思っていましたか?

//Dictionary dic<string, int>;

int getElementByKey1(string key)
{
    if(dic.ContainsKey(key))     //Look-up 1
        return dic[key];     //Look-up 2 in case of a "hit"

    return null;
}

int getElementByKey2(string key)
{
    try
    {
        return dic[key];      //Single look-up in case of a "hit"
    }
    catch
    {
        return null;          //Exception in case of a "miss"
    }
}
4

3 に答える 3

6

メソッドを使用して、3番目のものはどうですかTryGetValue()

int getElementByKey3(string key)
{
    int value;
    dic.TryGetValue(key, out value)
    return value;
}

ちなみに、nullとして宣言されたメソッドから戻ることはできないため、メソッドは無効ですint

int?を許可するには、代わりにas として宣言する必要があります。null

int? getElementByKey3(string key)
{
    int value;
    if(dic.TryGetValue(key, out value))
        return value;

    return null;
}

最高のものになると思います。しかし、提案された 2 つの方法から選択する必要がある場合は、最初の方法を選択します。 .

于 2013-04-11T20:24:19.450 に答える