リフレクションによる変数名の取得
C# では、コンパイルされた中間言語 (IL) コードで変数が名前なしで表示されることがあります。ただし、式ツリーを利用して変数名を取得するリフレクション手法を利用できます。
次の例を考えてみましょう:
var someVar = 3; Console.WriteLine(GetVariableName(someVar));
私たちの目標は、「someVar」を出力することです。
式ツリーの使用
リフレクションでは、次の要素に直接アクセスできません。変数名。代わりに、式ツリーを使用して、変数を名前付きスコープにプロモートするクロージャを作成できます。次のメソッドでこれを実現します。
public static string GetVariableName<T>(Expression<Func<T>> expr) { var body = (MemberExpression)expr.Body; return body.Member.Name; }
このメソッドを使用するには、ラムダ式内で変数をラップします。
Console.WriteLine(GetVariableName(() => someVar));
注: このアプローチには次のものが付属します。オブジェクトの作成とリフレクションの大量使用によるパフォーマンスのオーバーヘッド。
C# 6.0代替
C# 6.0 では、nameof キーワードによりこのプロセスが簡素化されます。
Console.WriteLine(nameof(someVar));
nameof キーワードは、式のパフォーマンスに影響を与えることなく変数名を取得する直接的で軽量な方法を提供します。ツリーメソッド。
以上が実行時に C# 変数の名前を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。