2011-06-20 151 views
-1

可能重複:
How to get variable name using reflection?C#獲取字符串名稱的名字

如何獲得字符串名稱的名稱不是字符串的值

string MyString = ""; 
Response.Write(MyString.GetType().Name);//Couldn't get the string name not the value of the string 

結果應該顯示返回字符串名稱「MyString」

我發現了一些建議的代碼,並重寫它使其更短,但仍然不太喜歡它。

static string VariableName<T>(T item) where T : class 
{ 
    return typeof(T).GetProperties()[0].Name; 
} 

Response.Write(VariableName(new {MyString})); 我正在尋找另一種方式把它縮短像下面,但沒怎麼使用轉換當前類,所以我可以在同一行中使用它們

Response.Write(typeof(new { MyString }).GetProperties()[0].Name); 
+0

爲什麼你需要那個? –

+2

不,它不應該。答案會很快告訴你爲什麼。 – dlev

+0

你可以使用反射,但是你有這樣一個特殊原因嗎? – keyboardP

回答

0

儘管馬塞洛的答案(並鏈接到「複製」問題)將解釋如何做你以後的事情,快速解釋爲什麼你的代碼不起作用。

GetType()確實如此:它獲取調用它的對象的Type。在你的情況下,它將返回System.String,這是變量MyString引用的對象的Type。因此,您的代碼實際上會打印的那個Type,而不是變量的名稱(這正是您實際需要的)。

+0

我已經使課程更短,但我不太喜歡它。 靜態字符串VariableNameName (T item)其中T:class { return typeof(T).GetProperties()[0] .Name; } ///以下是如何使用它 var MyString =「」; Response.Write(VariableNameName(new {MyString})); 我想縮短它,但不知道如何使用這個LINQ。 Response.Write(typeof(new {MyString})。GetProperties()[0] .Name); – SMTPGUY01