我创建了一堆字符串变量,用于存储变量名称本身的值。 e.g
string name = "name";
string number="number;
但是随着列表变长,重复输入所有内容变得乏味,所以我创建了一个只保存字符串数据的类,并让构造函数执行脏工作。 e.g
class Data
{
public Data()
{
//pseudo code here:
name = NameOfTheVariable(this);
}
public string name {get;set;}
}
所以理想的输出是这样的:
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);
}
输出将是:" number",这是变量名称本身。
我确实尝试使用此帖中提到的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;}
}
有谁知道如何解决这个问题?
答案 0 :(得分:0)
Data number = new Data();
Console.WriteLine(number.name);
在C#6.0及以上版本中:
SomeNumberClass number = new SomeNumberClass();
Console.WriteLine(nameof(number));
您链接的Pre-C#6的解决方案会相应地工作,您只是不会写nameof
而是使用静态方法:
SomeNumberClass number = new SomeNumberClass();
Console.WriteLine(MemberInfoGetting.GetMemberName(() => number));