変数名やメソッド、クラス名等の名前が文字列として取得できる関数
ログやエラーメッセージなどに含めておくと、それらがリファクタリングで名前を変えた場合に追従できるのがメリット
また、特定のクラスだったら処理を分岐するといったケースでも直接文字列リテラルとして指定するのではなく
nameof演算子を使っておけば、のちのち変更された場合も動的に対応することができる
こんな感じで、変数名をべた書きしていた場合に、
var data = "abc";
data += DateTime.Now.ToString("yyyy-MM-dd");
Console.WriteLine($"data={data}");
dataって変数名はいくらなんでも抽象的だから名前を変えようってことで一括変換すると
var sampleData = "abc";
sampleData += DateTime.Now.ToString("yyyy-MM-dd");
Console.WriteLine($"data={sampleData}");
リテラルで書き込んでいた変数名が取り残されてしまう
そのため、nameof演算子をつかっておけば
var data = "abc";
data += DateTime.Now.ToString("yyyy-MM-dd");
Console.WriteLine($"{nameof(data)}={data}");
リファクタリングして変数名を変更したとしても
var sampleData = "abc";
sampleData += DateTime.Now.ToString("yyyy-MM-dd");
Console.WriteLine($"{nameof(sampleData)}={sampleData}");
追従させれるので、よからぬ修正がはいらず安心ってことです