0

在 C# 中,您可以像这样初始化一个数组:

var example = new int[] { 1, 4, 3 };

正如Custom Collection Initializers中所引用的:

应用集合初始值设定项的集合对象必须是实现 System.Collections.IEnumerable 的类型,否则会发生编译时错误。对于按顺序指定的每个元素,集合初始值设定项在目标对象上调用Add 方法,并将元素初始值设定项的表达式列表作为参数列表,对每个调用应用正常的重载决议。因此,集合对象必须包含适用于每个元素初始值设定项的 Add 方法。

但是您不能添加到 System.Array,必须为每个添加的项目创建一个新的更大的数组,这对性能不利。那么在数组上使用集合初始化器时,C# 是如何工作的呢?我想知道我是否可以编写一个带有支持集合初始化程序的内部数组的类。

4

2 回答 2

5

您提供的报价与自定义集合有关。

但是 array 不是自定义集合,它是内置类型,并且有自己的初始化语法规范。特别是,该规范不需要任何Add方法。

于 2016-01-28T09:40:21.377 回答
2

Array不是自定义集合。这是一个数组。数组初始值设定项早于集合初始值设定项,并且启发了语法

于 2016-01-28T09:40:40.047 回答