考虑以下情况:
ColumnDefinition[] columns = new ColumnDefinition[2];
columns[0] = new ColumnDefinition();
columns[1] = new ColumnDefinition();
在将列实例化为ColumnDefinition数组之后,我需要显式实例化每个数组元素。当然,它可以使用循环完成,但我想知道是否有更简单的东西会在实例化Array类型本身后立即实例化每个元素。
答案 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的每个元素。