[C#] 変数名を文字列で直接書かない!nameofを使う
はじめに
例外メッセージなどで、変数名を文字列として書くことがあります。
throw new ArgumentNullException("fileName");
一見問題ありませんが、変数名を変更したときに文字列だけ古いまま残る可能性があります。
そんなときに使えるのがnameofです。
nameofを使う
```csharp
static void Save(string? fileName)
{
if (fileName is null)
{
throw new ArgumentNullException(nameof(fileName));
}
}
nameof(fileName)
の結果は、
fileName
という文字列になります。
何が便利なのか
次のコードでは、
```csharp
throw new ArgumentNullException("fileName");
fileNameは単なる文字列です。
そのため変数名を、
fileName ↓ path
へ変更しても、文字列の"fileName"は自動的に変更されない可能性があります。
一方、
nameof(fileName)
なら、変数そのものを参照しています。
IDEの名前変更機能を使ったリファクタリングにも追従しやすくなります。
プロパティ名にも使える
Console.WriteLine(nameof(Person.Name));
結果は、
Name
です。
変数だけでなく、型やプロパティ、メソッドなどの名前にも利用できます。
まとめ
コード中で、
"PropertyName" "ParameterName"
のようにプログラム上の名前を直接文字列にしている場所を見つけたら、nameofが使えないか確認してみましょう。
nameof(PropertyName)
コンパイラがチェックできるコードになるため、リファクタリングにも強くなります。
今回のTips:コード上の名前を文字列にしたいときはnameofを使う。
Please follow and like us:
コメント