1. ホーム
  2. c#

[解決済み】nameofの目的は何ですか?

2022-03-27 10:48:34

質問

バージョン6.0では、新しい機能である nameof しかし、コンパイル時に変数名を取って文字列に変更するだけなので、その目的がよくわかりません。

を使うときに、何か目的があるのではと思いました。 <T> を実行しようとすると nameof(T) が表示されるだけです。 T の代わりに、使用される型が表示されます。

目的は何でしょうか?

解決方法は?

プロパティ名をもとに例外を発生させる場合や、"Security "メソッドを使用する場合など、プロパティ名を再利用したい場合はどうでしょうか? PropertyChanged イベントが発生します。プロパティの名前が欲しいケースは数多くあります。

この例を見てみましょう。

switch (e.PropertyName)
{
    case nameof(SomeProperty):
    { break; }

    // opposed to
    case "SomeOtherProperty":
    { break; }
}

最初のケースでは、名前を変更すると SomeProperty の両方を変更しないと、コンパイルエラーが発生します。 nameof(SomeProperty) の式で表されます。2つ目のケースは SomeOtherProperty を変更したり "SomeOtherProperty" の文字列は、ビルド時にエラーや警告を出さずに、静かに壊れた実行時動作となります。

これは、コードのコンパイルやバグのない状態を維持するために非常に有効な方法です(sort-of)。

(A Eric Lippertの素晴らしい記事 なぜ infoof が失敗し、一方 nameof した)