C#面试题更新 2026-08-05

请解释 C# 中的集合初始器,并说明它的具体用法以及适用的场景。

技术原理C#

考察说明

考查对 C# 语法特性中集合初始器的理解与使用能力。

回答思路

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