C# C:具有构造函数参数的对象数组

C# C:具有构造函数参数的对象数组,c#,object,C#,Object,我有一个班级测量 我在这个类中有一个构造函数。作为: class Measurement { public Measurement(MainWindow mainWindow) { .... } } 如何使用MainWindow参数创建包含8个对象的数组 就像我代码中的某个地方: Measurement[] measurements= new Measurement[8](mainWin); 您可以使用LINQ:

我有一个班级测量

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

class Measurement
    {
      public Measurement(MainWindow mainWindow)
        {
            ....
        }
}
如何使用MainWindow参数创建包含8个对象的数组

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

Measurement[] measurements= new Measurement[8](mainWin); 
您可以使用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)
};
您可以使用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)
};

您希望阵列具有8次单个参考,还是8个单独的测量对象

首先:

var measurements = Enumerable.Repeat(new Measurement(mainWin), 8).ToArray();
第二项:

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

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

您想要一个具有8次单个参考的阵列,还是8个单独的测量对象

首先:

var measurements = Enumerable.Repeat(new Measurement(mainWin), 8).ToArray();
第二项:

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

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

有一种方法可以使用:

引述:

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


有以下几种方法:

引述:

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



你对新的衡量标准有何期待[8]mainWin;可以吗?我有8张不同性质的图纸,你希望新的尺寸是多少[8]mainWin;可以吗?我有8张具有不同属性的图纸,很好地指出了这两种方法的行为,但是在什么情况下可能需要一个8个或任意数量的数组来引用同一个对象?或者您的意思是主窗口是多次引用的对象?实际上有8个单独的测量实例?@BhushanFirake这是匿名方法的参数名称;在这种情况下,从呼叫到范围的号码。使用u作为未使用变量的名称是一种常见的约定。我从未见过接受第二个参数的Select重载。8是做什么的?@musefan:想象一个游戏板上空间状态的不可变类型。考虑到不变性,可以使用对初始状态的相同引用填充整个电路板-然后对电路板状态的任何更改都会更改数组元素以引用新状态。这相对比较少见,但我想提请大家注意这两种不同的潜在含义。您也可以Enumerable.RepeatmainWin,8.Selectmw=>new Measurementmw.ToArray;。指出这两种方法的行为做得很好,但是在什么情况下可能需要对同一对象的8个或任意数量的引用数组?或者您的意思是主窗口是多次引用的对象?实际上有8个单独的测量实例?@BhushanFirake这是匿名方法的参数名称;在这种情况下,从呼叫到范围的号码。使用u作为未使用变量的名称是一种常见的约定。我从未见过接受第二个参数的Select重载。8是做什么的?@musefan:想象一个游戏板上空间状态的不可变类型。考虑到不变性,可以使用对初始状态的相同引用填充整个电路板-然后对电路板状态的任何更改都会更改数组元素以引用新状态。这相对比较少见,但我想提请大家注意这两种不同的潜在含义。您也可以Enumerable.RepeatmainWin,8.Selectmw=>new Measurementmw.ToArray;。这将仅创建1个测量对象,而不是8个。那可能不可取,是的。但是,由于所有人都已经回答了填充数组的正确方法,我也想添加这个。添加了答案中包含的链接的引用。谢谢。由于添加了几个正确的方法,您决定添加一个不正确的方法?这真的没有道理。请注意,并非所有读者都清楚这是在重复对对象的引用,而不是重复对构造函数的调用。这将只创建1个度量对象,而不是8个。那可能不可取,是的。但是,由于所有人都已经回答了填充数组的正确方法,我也想添加这个。添加了答案中包含的链接的引用。谢谢。由于添加了几个正确的方法,您决定添加一个不正确的方法?这真的没有道理。请注意,并非所有读者都清楚这是在重复对对象的引用,而不是重复对构造函数的调用。@user2261524如果这是您所说的完美答案,则应将其标记为正确。@user2261524如果这是您所说的完美答案,则应将其标记为正确。