首頁 >後端開發 >C++ >如何在運行時取得 C# 變數的名稱?

如何在運行時取得 C# 變數的名稱?

Linda Hamilton
Linda Hamilton原創
2024-12-27 03:56:09266瀏覽

How Can I Get a C# Variable's Name at Runtime?

透過反射取得變數名稱

在 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));
nameof 關鍵字簡化了此過程:

nameof 提供了一關鍵字種直接、輕量級的方法來檢索變數名稱,而不會影響表達式的效能樹法。

以上是如何在運行時取得 C# 變數的名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn