我正在设计一些使用ReadOnlyCollection<T>
的接口来表明这些接口的使用者只能从集合中读取。
然而,提供的集合不是一成不变的,并且会不时变化,我想知道我的设计是否错误。 ReadOnlyCollection<T>
的孩子也应该是不可变的吗?
答案 0 :(得分:7)
ReadOnlyCollection<T>
类不是为了提供一个不可变的集合,而是一个围绕一个可变列表的“只读”包装器。但是,基础列表仍然是可变的,对列表的更改将暴露给只读集合。
如果需要在设计中公开真正不可变的集合,则应考虑使用新的Immutable Collections for .NET,并公开相应的不可变集合。