変数名自体の値を格納するために使用する文字列変数の束を作成しています。 例えばC#コンストラクタ内のオブジェクトの変数名を取得
string name = "name";
string number="number;
が、リストが長くなるにつれて、それは繰り返し、すべてを入力するために大変な作業となりますので、私は単なる文字列データを保持するクラスを作って、汚い仕事をするためにコンストラクタをしましょう。
public static void Main()
{
//Declare an object here, the constructor will automatically assign the
//variable name to the property.
Data number = new Data();
Console.WriteLine(number.name);
}
出力は次のようになります:「数」、変数名そのものである例えば
class Data
{
public Data()
{
//pseudo code here:
name = NameOfTheVariable(this);
}
public string name {get;set;}
}
だから理想的な出力はこのようなものになるだろう。
私はこの記事で言及MemberExpression使用してみました:get name of a variable or parameter
をしかし、関数がキーワードになりません「この」有効な引数として。 ので、私は例えば、そのポストで提供される機能を使用することはできません。
class Data
{
public Data()
{
//This line will not work
name= MemberInfoGetting.GetMemberName(() => this);
}
public string name{get;set;}
}
誰もが、私はこの問題を解決することができる方法を知っていますか? C#6.0とそれ以上で
これはちょっと複雑で奇妙な方法です。静的クラスを作成し、その静的フィールドとして変数を宣言する必要があります。 –
あなたはこれが何のために必要なのでしょうか?リフレクションによって変数/プロパティ名を取得できます。しかし、それはちょっと遅いです。また、最近のバージョン(正確に導入された時期は確かではありません)には、 'nameof()'があります... – Fildor
'nameof'が利用できないC#版で作業していますか? – Evk