1

我有一堂课Measurement

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

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

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

就像我的代码中的某个地方:

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

4 回答 4

15

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

为了第一:

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

对于第二个:

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

(或者只是创建一个数组而不初始化元素,然后用循环填充它,当然。这是个人喜好问题。)

于 2013-06-18T14:22:20.680 回答
14

You can use LINQ:

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

A second way is to use the array initializer syntax:

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)
};
于 2013-06-18T14:21:02.703 回答
3

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

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

引用 :

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

于 2013-06-18T14:22:25.437 回答
2
Measurement[] measurements= new Measurement[8];

for(int i = 0; i < measurements.Length; i++)
{
   measurements[i] = new Measurement(mainWin);
}
于 2013-06-18T14:22:18.950 回答