2011-06-20 20 views
-1

可能性の重複:結果が表示されるはずの文字列C#のget文字列名の名前

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

の値文字列名の名前ではなく取得する方法
How to get variable name using reflection?

文字列名 "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を取得します。あなたの場合、変数MyStringによって参照されるオブジェクトのTypeであるSystem.Stringが返されます。したがって、コードは実際にはType.Nameを印刷し、変数の名前は実際には表示されません。

+0

私はクラスをもっと短くするようにしましたが、あまり好きではありません。 static string VariableNameName (Tアイテム)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

関連する問題