如何获取变量名称,如nameof(this)

时间:2016-11-02 12:03:53

标签: c#

如何获取此变量名称?

var thename = new myclass();

我想在myclass实例中使用变量名“thename”吗?

2 个答案:

答案 0 :(得分:2)

您对以下情况有何期待?

var theName = new MyClass();
var otherName = theName;
someList.Add(otherName);

您所追求的名称不属于实例,而是属于引用它的变量。

现在有三个引用指向同一个实例。两个有不同的名字,第三个没有名字。

在MyClass对象中,你无法知道谁在指着你。堆对象本身始终是匿名的。

答案 1 :(得分:0)

public class myclass()
{
    public string VariableName { get; set; }
}

var theName = new myclass();
theName.VariableName = nameof(theName);

像这样实例化变量,在创建对象之前不存在具有名称的变量。如果您想强制每个实例填充该变量,那么您可以执行类似这样的操作,但您的代码会更冗长:

public class myclass()
{
    public myclass(string variableName)
    {
        if (string.IsNullOrWhitespace(variableName)
        {
            throw new ArgumentNullException(nameof(variableName);
        }

        VariableName = variableName;
    }

    public string VariableName { get; private set; }
}

myclass theName;
theName = new myclass(nameof(myclass));

当然,不能保证某人没有传递不同的字符串。