コードインスペクション: パラメーター出力値は常に破棄されます(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 _) のような呼び出しが見られることは珍しくありません。
ReSharper はこのような呼び出しを分析し、すべての呼び出しサイトで破棄される 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");
}
}
2026 年 6 月 12 日