C#:带有Constructor参数的Object Array

use*_*524 1 c# object

我上课了Measurement.

我在这个类中有一个构造函数.如:

class Measurement
    {
      public Measurement(MainWindow mainWindow)
        {
            ....
        }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Measurement[] measurements= new Measurement[8](mainWin); 
Run Code Online (Sandbox Code Playgroud)

Bra*_*don 14

您可以使用LINQ:

var measurements = Enumerable.Range(0, 8).Select(i => new Measurement(mainWin)).ToArray();
Run Code Online (Sandbox Code Playgroud)

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

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)
};
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 14

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

为了第一:

var measurements = Enumerable.Repeat(new Measurement(mainWin), 8).ToArray();
Run Code Online (Sandbox Code Playgroud)

对于第二个:

var measurements = Enumerable.Range(0, 8)
                             .Select(_ => new Measurement(mainWin))
                             .ToArray();
Run Code Online (Sandbox Code Playgroud)

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

  • 我从未见过接受第二个参数的`Select`重载.`,8`做什么? (4认同)