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();

2番目の場合:

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

(または、要素を初期化せずに配列を作成し、もちろんループを挿入します。これは個人的な好みの問題です。)

于 2013-06-18T14:22:20.680 に答える
14

LINQ を使用できます。

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

2 番目の方法は、配列初期化構文を使用することです。

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(); 

見積もり :

1 つの繰り返し値を含むシーケンスを生成します。

于 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 に答える