如何获取此变量名称?
var thename = new myclass();
我想在myclass实例中使用变量名“thename”吗?
答案 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));
当然,不能保证某人没有传递不同的字符串。