C#获取其构造函数中对象的变量名

时间:2017-11-13 07:27:31

标签: c# variables expression

我创建了一堆字符串变量,用于存储变量名称本身的值。 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;}

}

有谁知道如何解决这个问题?

1 个答案:

答案 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));