Reputation: 415
I have a class Measurement
.
I have a constructor inside this class. as:
class Measurement
{
public Measurement(MainWindow mainWindow)
{
....
}
}
How can I create an Array of 8 Objects with the MainWindow Parameter?
Like somewhere in my code:
Measurement[] measurements= new Measurement[8](mainWin);
Upvotes: 1
Views: 2669
Reputation: 1504162
Do you want an array with a single reference 8 times, or 8 separate Measurement
objects?
For the first:
var measurements = Enumerable.Repeat(new Measurement(mainWin), 8).ToArray();
For the second:
var measurements = Enumerable.Range(0, 8)
.Select(_ => new Measurement(mainWin))
.ToArray();
(Or just create an array without initializing the elements, then populate it with a loop, of course. It's a matter of personal preference.)
Upvotes: 15
Reputation: 3260
There is this way (by using Enumerable.Repeat) :
var measurements = Enumerable.Repeat(new Measurement(mainWin), 8).ToArray();
Quote :
Generates a sequence that contains one repeated value.
Upvotes: 3
Reputation: 402
Measurement[] measurements= new Measurement[8];
for(int i = 0; i < measurements.Length; i++)
{
measurements[i] = new Measurement(mainWin);
}
Upvotes: 2
Reputation: 39222
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)
};
Upvotes: 14