リフレクションによる変数名の取得
コンパイル後にリフレクションのみを使用して変数の名前を決定することは現実的ではありません。変数は、中間言語 (IL) へのコンパイル中に名前を失います。
ただし、式ツリーとラムダ式を使用すると、変数をクロージャに昇格させることができ、その結果、変数を参照する匿名関数を作成できます。
コード実装:
static string GetVariableName<T>(Expression<Func<T>> expr) { var body = (MemberExpression)expr.Body; return body.Member.Name; }
使用法:
static void Main() { var someVar = 3; Console.Write(GetVariableName(() => someVar)); }
パフォーマンスに関する考慮事項:
このメソッドを使用すると、次のことが可能になります。複数のオブジェクトの作成、GC の圧力、およびリフレクションのオーバーヘッド。
C# 6.0 以降での代替方法:
C# 6.0 では、nameof キーワードを使用することでより簡単なアプローチが可能です:
static void Main() { var someVar = 3; Console.Write(nameof(someVar)); }
以上がC# でリフレクションを使用して変数の名前を取得する方法とその代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。