JetBrains Rider 2024.1 ヘルプ

コード検査: パラメーター出力値は常に破棄されます (private アクセス)

C# 6.0 の「out var」は、out パラメーターを持つメソッドを使用するために必要なコードの量を大幅に削減します。現在では、ほとんどの場合、変数をインラインで宣言し、変数の型を省略するために型推論を使用することがよくあります: dictionary.TryGetValue(key, out var value).

C# 6.0 が改善した out パラメーターの別の側面は、M(out _) または M(out var _) 構文では不要な出力パラメーター値を無視する機能です。最新の C# コードベースで DoSomething(arg, out _, out _) のような呼び出しが見られることは珍しくありません。

JetBrains Rider は、そのような呼び出しを分析し、すべての呼び出しサイトで破棄される out パラメーターを報告します。これは、値が常に破棄される潜在的な問題を特定し、未使用のパラメーターを削除することで署名を簡素化できます。

class Test { private Dictionary<string, int> _set = new(); // Parameter 'value' output value is always discarded private bool HasKey(string key, out int value) { return _set.TryGetValue(key, out value); } private void Usage(SetOfThings set) { if (set.HasKey("abc", out _)) Console.WriteLine("do something"); } }
class Test { private Dictionary<string, int> _set = new(); private bool HasKey(string key) { int value; return _set.TryGetValue(key, out value); } private void Usage(SetOfThings set) { if (set.HasKey("abc")) Console.WriteLine("do something"); } }