ホームページ > バックエンド開発 > C++ > C# で変数名を取得するためにリフレクションをどのように使用できますか?

C# で変数名を取得するためにリフレクションをどのように使用できますか?

Linda Hamilton
リリース: 2024-12-30 22:41:12
オリジナル
378 人が閲覧しました

How Can Reflection Be Used to Retrieve Variable Names in C#?

リフレクションによる変数名の取得を理解する

リフレクションを使用して変数名を取得するタスクは、開発者にとってしばらくの間興味をそそられてきました。 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート