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

请解释 C# 中 ReadOnlyCollection 的概念,并说明如何构造一个只读集合。

技术原理C#

考察说明

考查对 C# 只读集合的理解及创建方式。

回答思路

  1. 【回答框架 1】ReadOnlyCollection 是 System.Collections.ObjectModel 命名空间下的泛型类,它包装了一个 IList 接口,提供只读的集合视图,不允许添加、删除或修改元素。其核心特征是提供只读访问,但底层集合若被修改,ReadOnlyCollection 会反映这些变化。
  2. 【回答框架 2】创建只读集合一般通过构造函数传入现有的 IList 实现,例如 List,然后返回 ReadOnlyCollection 实例。也可以使用 List 的 AsReadOnly 方法快速获得只读包装。
  3. 【回答框架 3】ReadOnlyCollection 本身不保证线程安全,它只是阻止外部修改,若多线程同时操作底层集合仍需同步。此外,它只是视图,不是副本,底层集合变化会反映到只读集合中。
  4. 【关键点 1】ReadOnlyCollection 提供只读包装,不保证底层不变。
  5. 【关键点 2】创建方式:new ReadOnlyCollection(list) 或 list.AsReadOnly()。
  6. 【关键点 3】修改底层集合会影响只读视图。
  7. 【易错点 1】误以为只读集合是副本,实际是视图。
  8. 【易错点 2】只读集合不保证线程安全,需要额外同步。