nakamurakko’s blog

仕事で覚えたこと、勉強したことを自分のメモ代わりに書いていこうかなと。

nameof で文字列定数を設定する

環境

  • Visual Studio 2022
  • .NET 6.0
  • C#

nameof 、便利ですね。

Console.WriteLine(nameof(System.Threading.Tasks.Task));

と書くと、

Task

と、クラス名が文字列として出力される。 クラス名に限らず変数なども文字列として出力されるけど、こんな書き方も出来た。

class MailSetting
{
    public const string HOST_NAME = nameof(HOST_NAME);
}

キー値として使う定数文字列は、 HOST_NAME = "HOST_NAME" のように 定数 = 定数の文字列 書く事がよくあるけど、 上記のように 定数 = nameof(定数) も可能なので、下記のように

Console.WriteLine("出力結果:" + MailSetting.HOST_NAME);

/// <summary>
/// メール設定クラス。
/// </summary>
class MailSetting
{
    /// <summary>ホスト名。</summary>
    public const string HOST_NAME = nameof(HOST_NAME);
}

と書くと、

出力結果:HOST_NAME

と、 HOST_NAME が文字列として出力される事を確認できた。

定数名を変更する場合、 Visual Studio の名前変更機能を使えば定数値も変わる事になり、修正漏れが少なくなる(はず)。