[C#] 変数名を文字列で直接書かない!nameofを使う

スポンサーリンク

[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:

コメント

タイトルとURLをコピーしました