透過反射取得變數名稱
在 C# 中,變數在編譯的中間語言 (IL) 程式碼中可能會顯示為無名。但是,我們可以利用反射技術透過表達式樹來檢索變數名稱。
考慮以下範例:
var someVar = 3; Console.WriteLine(GetVariableName(someVar));
我們的目標是輸出「someVar」。
使用表達式樹
反射不提供對變數的直接存取名稱。相反,我們可以使用表達式樹來建立一個閉包,將變數提升到命名範圍。以下方法可以實現此目的:
public static string GetVariableName<T>(Expression<Func<T>> expr) { var body = (MemberExpression)expr.Body; return body.Member.Name; }
要使用此方法,我們將變數包裝在lambda 表達式中:
Console.WriteLine(GetVariableName(() => someVar));
注意: 此方法附帶由於物件創建和大量反射使用而產生的效能開銷。
C# 6.0替代方案
在C# 6.0 中,nameof 關鍵字簡化了此過程:
Console.WriteLine(nameof(someVar));
以上是如何在運行時取得 C# 變數的名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!