コードインスペクション:「nameof」式で文字列リテラルの一部として名前を参照する。
.NET ライブラリには、型、メンバー、または変数の 名前を引数として受け入れるように設計された多くのメソッドがあります。 最も一般的な例の 1 つは ArgumentNullException(string paramName) です。 そのようなメソッドの引数として文字列リテラルを使用する場合、対応するシンボルの名前が変更されたときにリテラルのスペルが間違っているか変更されていない場合、エラーが発生する可能性があります。 有効なシンボルに対応しない文字列リテラルは、コンパイラーによってキャッチされません。
C# 6.0 で追加された nameof 演算子は、この問題に対処し、スコープ内にあるシンボルの文字列名をキャプチャーできるようにします。
以下の例では、ReSharper は、 ArgumentNullException() の引数の文字列リテラル "order" を nameof(order) に置き換えることを提案しています。 結果は同じです: nameof(order) は文字列 'order' を返しますが、 nameof ではコードのエラーが起こりにくくなります。
public void OrderErrorHandler(object order)
{
if (order == null)
throw new ArgumentNullException("order");
/* ... */
}
public void OrderErrorHandler(object order)
{
if (order == null)
throw new ArgumentNullException(nameof(order));
/* ... */
}
2026 年 6 月 12 日