ホームページ > バックエンド開発 > C++ > C# でリフレクションを使用して変数の名前を取得する方法とその代替手段は何ですか?

C# でリフレクションを使用して変数の名前を取得する方法とその代替手段は何ですか?

Mary-Kate Olsen
リリース: 2024-12-30 18:48:15
オリジナル
195 人が閲覧しました

How Can I Get a Variable's Name in C# Using Reflection and What are the Alternatives?

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

コンパイル後にリフレクションのみを使用して変数の名前を決定することは現実的ではありません。変数は、中間言語 (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 サイトの他の関連記事を参照してください。

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