我正在制作测试代码以试图解决这个问题。我想分配/实例化我的类的数组。我想尽可能地初始化它,包括分配/实例化我的类MyClass(){_ i ++}。现在我正在做两个 运营,
MyClass[] ClassyChassis=new MyClass[4];
for(int i=0;i<4;i++) ClassyChassis[i]=new MyClass();
我可以在MyClass构造函数MyClass()中做一些事情。但我想让每个数组成员知道它在数组中的位置,分配默认值等等。
为什么我不能通过使用
重载MyClass []来实现这一点MyClass ClassyChassis=new MyClass[5]();
MyClass[5](initalizer0,initalizer1,initalier2);
答案 0 :(得分:1)
MyClass []本身不是一个类,它是一个MyClass类型的数组。您无法在内置数组类型中添加构造函数。
工厂方法可行。创建一个工厂类并添加一个名为CreateMyClassCollection的方法(int number,param1,param2,param3)
public static class MyClassFactory
{
public static List<MyClass> CreateMyClassCollection(int number, param1, param2, param3)
{
List<MyClass> items = new List<MyClass>();
for (int counter=0;counter<number;counter++)
{
items.Add(new MyClass(param1,param2,param3);
}
return items;
}
}
答案 1 :(得分:0)
让类定义为具有两个属性name和ID,
public class MyClass
{
public int SomeID { get; set; }
public string someName { get; set; }
}
您可以声明并初始化类数组,如下所示:
MyClass[] MyClassArray = { new MyClass(){SomeID=1,someName="aName"},
new MyClass(){SomeID=10,someName="bName"},
new MyClass(){SomeID=11,someName="cName"},
new MyClass(){SomeID=12,someName="dName"}
};
或者您可以使用MyClass
List<MyClass> MyClassList = new List<MyClass>(){ new MyClass(){SomeID=1,someName="aName"},
new MyClass(){SomeID=10,someName="bName"},
new MyClass(){SomeID=11,someName="cName"},
new MyClass(){SomeID=12,someName="dName"}
};