List<T>
实现了IReadOnlyCollection<T>
接口,并提供了AsReadOnly()
方法,该方法返回ReadOnlyCollection<T>
(该类也实现了IReadOnlyCollection<T>
)。
AsReadyOnly()
的使用/原因是什么?它存在的意义在于处理其中一两个极端情况,此时仅将列表作为IReadOnlyCollection<T>
返回就不够好了。
起初我认为它可能是为了防止取消const限定,但看起来你可以通过ReadOnlyCollection<T>
的Items
访问器来完成这个操作。
顺便说一下,ReadOnlyCollection<T>
类型的文档如下:
提供用于泛型只读集合的基类。
这与描述构造函数的方式相矛盾,该构造函数如下所示:
初始化(...)类的新实例,该实例是指定列表的只读包装。
更新:我没有看到ReadOnlyCollection<T>
的Items
是protected。
.ToArray()
。在我看来更简单! - Kieren Johnstone.ToArray()
创建一个全新的数组,因此速度较慢,并且该数组是可变的,这意味着它的任何元素都可以被更改。.AsReadOnly()
更快,并且消费者无法通过更改单个元素来改变它。但是当原始列表更改时,它也会发生变化。 - bboyle1234