【发布时间】:2013-06-28 05:13:11
【问题描述】:
List<T> 实现IReadOnlyCollection<T> 接口并提供AsReadOnly() 方法,该方法返回ReadOnlyCollection<T>(该方法又实现IReadOnlyCollection<T>)。
AsReadyOnly() 的用途/原因是什么?它的存在有一种或两种极端情况的味道,其中仅将列表返回为IReadOnlyCollection<T> 还不够好。
起初我虽然可能是为了防止消除成本,但看起来你可以使用ReadOnlyCollection<T> 的Items 访问器来做到这一点。
顺便说一句。 ReadOnlyCollection<T> 类型的文档为
为通用只读集合提供基类。
在我看来,这与将构造函数描述为
初始化 (...) 类的新实例,该实例是指定列表的只读包装器。
更新:
我没有看到ReadOnlyCollection<T> 的Items 受到保护。
【问题讨论】:
-
我更喜欢
.ToArray()。更简单的海事组织! -
@KierenJohnstone 也可能更慢。
-
.ToArray()创建了一个全新的数组,因此速度较慢,而且数组是可变的,这意味着它的任何元素都可以更改。.AsReadOnly()更快,消费者不能通过改变单个元素来改变它。但是,当原始列表发生变化时,它确实会发生变化。
标签: c# generics collections