首頁 > 後端開發 > 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) 期間會遺失名稱。

但是,使用表達式樹和 lambda 表達式,可以將變數提升為閉包,從而建立引用該變數的匿名函數。

程式碼實作:

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 關鍵字允許更直接的方法:

以上是如何使用反射在 C# 中取得變數名稱以及有哪些替代方案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板