请解释 C# 中的集合初始器,并说明它的具体用法以及适用的场景。
考察说明
考查对 C# 语法特性中集合初始器的理解与使用能力。
回答思路
- 【回答框架 1】集合初始器是 C# 的一种语法糖,用于在创建集合对象的同时初始化其元素,它允许在单个表达式中完成集合的创建和元素的添加,从而简化代码并提高可读性。
- 【回答框架 2】对于实现了 IEnumerable 接口并含有 Add 方法的集合类型,可以使用集合初始器。其基本形式是在对象初始化器的大括号内,通过调用 Add 方法的参数列表来添加元素,支持多次添加。
- 【回答框架 3】集合初始器还支持带索引的初始化,主要用于实现了索引器的集合类型,比如 Dictionary,可以通过键值对的形式指定初始内容。此外,在扩展方法中也可以使用,但需注意其限制。
- 【回答框架 4】使用集合初始器时,编译器会依次调用相应的 Add 方法或索引器赋值,因此所操作的集合类型必须包含可访问的 Add 方法。在自定义集合或特定场景下需确保该方法存在。
- 【关键点 1】集合初始器简化了集合的创建与初始化过程,本质是对象初始化器的扩展。
- 【关键点 2】要求集合类型实现 IEnumerable 并提供可用的 Add 方法。
- 【关键点 3】支持带有索引的初始化,典型应用于 Dictionary 等带索引器的集合。
- 【关键点 4】编译器将初始化代码转换为对 Add 方法的顺序调用。
- 【关键点 5】它不能用于初始化具有固定大小的数组,但可用于 List 等动态集合。
- 【易错点 1】不能在集合初始器中直接初始化没有 Add 方法的集合类型,否则会导致编译错误。
- 【易错点 2】使用带索引的初始器时,集合必须支持相应的索引器,否则无法编译。
- 【易错点 3】初始化顺序和调用顺序有关,因此对于依赖添加顺序的逻辑,需谨慎处理。