[解決済み】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
した)
関連
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み] 関数を終了するには?
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] Try-catchは私のコードをスピードアップさせるか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み] C#で変数のデータ型を取得するにはどうしたらいいですか?