透過反射取得變數名稱
單獨使用反射來決定編譯後的變數名稱是不可行的。變數在編譯為中間語言 (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中文網其他相關文章!