2022年01月31日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説! total 975 count

nameof式: あなたの名前そのものが欲しいのです

Written By: 川俣 晶連絡先

この章のテーマ §

 nameof式について学びます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, int型, byte型

解説 §

 nameof式は、nameof(名前)と書き、その名前を文字列として得ます。

 たとえば変数aがあると、nameof(a)は"a"となります。

 そのような機能にどんなメリットがあるのかと言えば、CTRL+R, Rキーによる名前変更などを行うとその名前も確実に変更されます。単に文字列として書いておくと変更されません。

 たとえば、サンプルソースのConsole.WriteLine($"{nameof(sample)}の値は{sample}です。");のような行は、変数名がどう書き換えられても常に正しい対応関係を保ちます。

 ソースコードはどんどん書き換えられていくものだと思うと、地味ですが割と便利です。

罠の数々 §

  • サンプルソースのbyte.MaxValueのようなドット区切りの場合は最後の項目の名前だけを扱う。つまり、これは"MaxValue"という文字列になる
  • @変数名のように、エスケープされた名前の場合、エスケープ文字@は除外した名前の文字列が得られる

参考リンク §

nameof 式 (C# リファレンス)

サンプルソース: kw_nameof §

var sample = 123;

Console.WriteLine($"{nameof(sample)}の値は{sample}です。");

Console.WriteLine($"{nameof(byte.MaxValue)}の値は{byte.MaxValue}です。");

実行結果 §

sampleの値は123です。

MaxValueの値は255です。

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 以下のプログラムの実行結果を予測してみよう。

Console.WriteLine(nameof(123));

  1. 何も出力しない
  2. 123
  3. "123"
  4. コンパイルエラー
  5. 実行時例外

[[解答]]

単行本情報