リフレクションを使用して変数名を取得するタスクは、開発者にとってしばらくの間興味をそそられてきました。 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)); }
この例では、メソッド GetVariableName を使用して変数 someVar の名前を取得します。
パフォーマンスに関する考慮事項
この手法は計算コストが高くなる可能性があることに注意することが重要です。実行中にオブジェクトを作成および破棄すると、ガベージ コレクションの圧力が高まる可能性があります。さらに、内部では複数のメソッドが呼び出され、リフレクションが多用されます。したがって、パフォーマンスが重要なコード パスではこのアプローチを使用しないことをお勧めします。
以上がC# で変数名を取得するためにリフレクションをどのように使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。