C#:带有Constructor参数的Object Array

时间:2013-06-18 14:18:32

标签: c# object

我有一个班级Measurement

我在这个类中有一个构造函数。为:

class Measurement
    {
      public Measurement(MainWindow mainWindow)
        {
            ....
        }
}

如何使用MainWindow参数创建8个对象的数组?

就像我代码中的某处:

Measurement[] measurements= new Measurement[8](mainWin); 

4 个答案:

答案 0 :(得分:14)

您可以使用LINQ:

var measurements = Enumerable.Range(0, 8).Select(i => new Measurement(mainWin)).ToArray();

第二种方法是使用数组初始化语法:

var measurements = new[] {
    new Measurements(mainWin), new Measurements(mainWin), 
    new Measurements(mainWin), new Measurements(mainWin), 
    new Measurements(mainWin), new Measurements(mainWin), 
    new Measurements(mainWin), new Measurements(mainWin)
};

答案 1 :(得分:14)

您想要一个具有8次单引用的数组,还是8个单独的 Measurement个对象?

第一个:

var measurements = Enumerable.Repeat(new Measurement(mainWin), 8).ToArray();

第二个:

var measurements = Enumerable.Range(0, 8)
                             .Select(_ => new Measurement(mainWin))
                             .ToArray();

(或者只是在不初始化元素的情况下创建数组,然后用循环填充它。这是个人偏好的问题。)

答案 2 :(得分:3)

有这种方式(使用Enumerable.Repeat):

var measurements = Enumerable.Repeat(new Measurement(mainWin), 8).ToArray(); 

引用:

  

生成包含一个重复值的序列。

答案 3 :(得分:2)

Measurement[] measurements= new Measurement[8];

for(int i = 0; i < measurements.Length; i++)
{
   measurements[i] = new Measurement(mainWin);
}