创建一个由字符串命名的成员

时间:2011-09-06 19:02:56

标签: c# string class

显然你不能像这样创建一个类的成员

string name = "member-";
 for(int i=0;i<5;i++)
{
    classname name+i.toString() = new classname();
}

我不明白为什么并且有一个好的解决方法?

如果我需要创建多个成员,该怎么办?

4 个答案:

答案 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)

是否有某些原因您不使用反射来获取程序集/程序集中的类名列表?

您可以选择完全限定名称和简单名称。然后,您可以相应地格式化字符串。