2016-03-31 19 views
0
var a = new myTestClass(); 
var b = new myTestClass2(); 
list<string> instList = new list<string>(); 
instList.add("b"); 

public void simpleFunc() 
{ 
foreach(string i in instList){ 
a.fieldName = **i.myFieldName;** 
//HERE i is b which refers to the instance of myTestClass2 
} 

我想在这里完成的是:创建一个字符串列表whihc是类实例的名称然后在每个循环内部使用instlist字符串像一个实例类和添加的东西,该类的属性使用文本而不是类的实例名称

这是可能的吗?

回答

2

如果你真的想这样做,你可以创建一个字典,其名称为key,实例为value。我想知道为什么你认为变量名是如此重要...变量名可以很容易地改变,毕竟它只是一个指向实际对象的指针。你不应该创建一个类来保存变量的'元数据'吗?

Dictionary<string, string> d = new Dictionary<string, string>(); 
d.Add(nameof(a), a); 
d.Add(nameof(b), b); 

string valueAtB = d["b"]; 
+0

注:nameof只在C#6.0提供,因此,如果您使用的是早期版本的代码不会编译 –

+0

的确,那么你可以只用'd.Add(“B”,B); ',这不是那么有表现力,但也是一样的。 –

+0

检查此解决方案,它提供了一种方法来获取名称前c#6 http://stackoverflow.com/questions/9801624/get-name-of-a-variable-or-parameter – CathalMF

相关问题