如何用我的构造函数重载新的MyClass Classy = new MyClass [n]?

时间:2016-06-16 02:06:01

标签: c# arrays

我正在制作测试代码以试图解决这个问题。我想分配/实例化我的类的数组。我想尽可能地初始化它,包括分配/实例化我的类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);

2 个答案:

答案 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"} 
                                                };