【问题标题】:initialize array with default constructor [duplicate]使用默认构造函数初始化数组[重复]
【发布时间】:2025-12-14 22:00:02
【问题描述】:

我可以使用默认构造函数(或者更好的是,指定的构造函数)初始化一个类数组而不通过循环吗?

所以,假设我有一个 Person 数组:

var arr = new Person[10];

现在,我应该通过循环遍历所有 Person 来初始化它们。

foreach(var p in arr)
    p = new Person();

我可以避免循环吗?

【问题讨论】:

  • 看看这个来自@JonSkeet的answer
  • 请注意,您的循环不会编译,但我们理解您的观点。 (分配给循环变量不起作用,您需要一个“for”循环或类似的东西。)

标签: c# arrays


【解决方案1】:

对于任意大小的数组,你确实无法避免循环。你可以这样做:

Enumerable.Range(0,10).Select(i=>new Person()).ToArray();

但这也使用了一个不完整的循环。

【讨论】:

    【解决方案2】:
    var arr = new Person[] {new Person(),new Person()...};
    

    【讨论】:

    • 对于大中型数组,老实说,这看起来比循环更糟糕。
    • @Pierre-LucPineault 没有对此提出异议,问题是如何避免循环。