ReSharper 2025.3 ヘルプ

コード検査: 辞書検索は「TryGetValue」で簡略化できます

このインスペクションは、ContainsKey の後にインデックスアクセサーが続く代わりに TryGetValue メソッドを使用することで、辞書の検索を簡素化できることを提案しています。

ContainsKey とインデックスアクセサーはどちらも辞書内のキーを検索します。つまり、最初にキーが存在するかどうかを確認し、次に実際に値を取得するという同じ操作を 2 回実行することになります。

TryGetValue はこれらの操作を組み合わせて、辞書の検索を 1 回だけ実行します。指定されたキーに関連付けられた値を取得しようとします。キーが存在する場合は、true を返し、キーに関連付けられた値を変数に割り当てます。キーが存在しない場合は、false を返し、出力変数には辞書内の値の型のデフォルト値が与えられます。

void WriteValue(IDictionary<int, int> dictionary, int key) { if (dictionary.ContainsKey(key)) { Console.WriteLine(dictionary[key]); } }
void WriteValue(IDictionary<int, int> dictionary, int key) { if (dictionary.TryGetValue(key, out var value)) { Console.WriteLine(value); } }
2024 年 6 月 05 日