实例化数组并一次实例化每个成员

时间:2011-05-19 09:27:29

标签: c# arrays elements instantiation

考虑以下情况:

ColumnDefinition[] columns = new ColumnDefinition[2];
columns[0] = new ColumnDefinition();
columns[1] = new ColumnDefinition();

在将列实例化为ColumnDefinition数组之后,我需要显式实例化每个数组元素。当然,它可以使用循环完成,但我想知道是否有更简单的东西会在实例化Array类型本身后立即实例化每个元素。

4 个答案:

答案 0 :(得分:3)

你可以申请一点LINQ:

var columns = Enumerable.Repeat(new ColumnDefinition(), 10).ToArray();

根据数组大小调整传递给Repeat的计数。但是,这将导致在数组的每个元素中保存相同的对象。所以也许需要重复创作:

var columns = Enumerable.Repeat(0, 10).Select(i => new ColumnDefinition()).ToArray();

答案 1 :(得分:1)

var columns = new []{new ColumnDefinition(), new ColumnDefinition()};

按预期工作。

答案 2 :(得分:1)

据我所知,除了简单的for循环之外的任何其他解决方案都会产生可怕的性能,而for循环只需要3行。

var columns = new ColumnDefinition[2];
for (int i = 0; i <= columns.Count(); i++) {
    columns[i] = new ColumnDefinition();
}

// This is also a shorthand which compiles to above but only valid for types with
// default contructor as above (i.e. string[] array cannot be initialized with this)
columns.Initialize();

答案 3 :(得分:0)

您可以使用Array.Initialize Method 通过调用值类型的默认构造函数来初始化value-type Array的每个元素。