显然你不能像这样创建一个类的成员
string name = "member-";
for(int i=0;i<5;i++)
{
classname name+i.toString() = new classname();
}
我不明白为什么并且有一个好的解决方法?
如果我需要创建多个成员,该怎么办?
答案 0 :(得分:1)
这看起来像使用Dictionary<string, classname>
:
var dictionary = new Dictionary<string, SomeClassName>();
var name = "member-";
for(int i = 0; i < 5; i++)
{
dictionary[name+i.ToString()] = new SomeClassName();
}
答案 1 :(得分:1)
如果你想要的只是创建5个classname
个对象并保持它们的顺序,那么一个简单的数组就可以实现。如果您不知道自己想要多少时间,请改用List<classname>
。
classname[] myClasses = new classname[5];
for(int i = 0; i < myClasses.Length; i++)
{
myClasses[i] = new classname();
}
答案 2 :(得分:1)
实际上,你可以在C#4.0中与ExpandoObject非常接近,如下所示。 Here is good MSDN article使用它们。
string name = "member-";
dynamic classname = new ExpandoObject();
for(int i=0;i<5;i++) {
dynamic newmember = new ExpandoObject();
classname[name+i.toString()] = newmember;
}
答案 3 :(得分:0)
是否有某些原因您不使用反射来获取程序集/程序集中的类名列表?
您可以选择完全限定名称和简单名称。然后,您可以相应地格式化字符串。