クラスをキーとインデックスとする辞書があり、項目が存在する場合はその項目を返し、それ以外の場合はnullを返すとします。どちらが効率的ですか?キーが存在するかどうかを確認するよりも効率的にKeyNotFoundExceptionをキャッチしていますか?
if(myDictionary.ContainsKey(myKey))
return myDictionary[myKey];
return null;
または
try { return myDictionary[myKey]; }
catch { return null; }
私が推測すると、スタックを巻き戻すことはハッシュルックアップよりも高価です。見つけ出す方法は一つしかありません! –
'if(myDict.TryGetValue(k、out v))return v;のような' TryGetValue'をいつでも使うことができます。そうでない場合はnullを返します。 ' – dcg
例外を回避する方法がある場合は、それを使用してください。 – Steve