这是一个人为的示例,但是可以说我已经声明了对象:

CustomObj fooObj;
CustomObj barObj;
CustomObj bazObj;

我有一个字符串数组:
string[] stringarray = new string[] {"foo","bar","baz"};

如何使用字符串数组以编程方式访问和实例化这些对象,并使用诸如foreach之类的方法进行迭代:
foreach (string i in stringarray) {
    `i`Obj = new CustomObj(i);
}

希望我想传达的想法很明确。这在C#中可能吗?

最佳答案

您需要清楚了解对象和变量之间的区别。对象本身没有名称。变量名称在编译时确定。除了通过反射,您不能通过执行时间确定的名称访问变量。

听起来您真的只想要Dictionary<string, CustomObj>:

Dictionary<string, CustomObj> map = new Dictionary<string, CustomObj>();

foreach (string name in stringArray)
{
    map[name] = new CustomObj(name);
}

然后,您可以使用索引器访问字典中的对象。

如果确实要在执行时根据变量的名称设置变量的值,则必须使用反射(请参阅Type.GetField)。请注意,这不适用于局部变量。

关于c# - 实例化对象时以编程方式使用字符串作为对象名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/314008/

10-13 08:05
查看更多