这是一个人为的例子,但我可以说我已声明了对象:
CustomObj fooObj;
CustomObj barObj;
CustomObj bazObj;
Run Code Online (Sandbox Code Playgroud)
我有一个字符串数组:
string[] stringarray = new string[] {"foo","bar","baz"};
Run Code Online (Sandbox Code Playgroud)
我如何使用字符串数组以编程方式访问和实例化这些对象,使用类似foreach的方法进行迭代:
foreach (string i in stringarray) {
`i`Obj = new CustomObj(i);
}
Run Code Online (Sandbox Code Playgroud)
希望我想要了解的想法很清楚.这可能在C#中吗?
提前致谢.
Jon*_*eet 32
您需要清楚地了解对象和变量之间的区别.对象本身没有名称.变量名在编译时决定.除非通过反射,否则无法通过执行时确定的名称访问变量.
听起来你真的只想要一个Dictionary<string, CustomObj>
:
Dictionary<string, CustomObj> map = new Dictionary<string, CustomObj>();
foreach (string name in stringArray)
{
map[name] = new CustomObj(name);
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用索引器访问对象到字典.
如果您真的想在执行时根据名称设置变量值,则必须使用反射(请参阅Type.GetField).请注意,这不适用于局部变量.