【发布时间】:2010-09-21 23:54:27
【问题描述】:
我的类包含一个Dictionary<T, S> dict,我想公开一个ReadOnlyCollection<T> 的键。如何在不将Dictionary<T, S>.KeyCollection dict.Keys 复制到数组然后将数组公开为ReadOnlyCollection 的情况下做到这一点?
我希望ReadOnlyCollection 成为一个合适的包装器,即。反映底层字典的变化,据我所知,将集合复制到数组不会这样做(而且看起来效率低下 - 我实际上并不想要一个新集合,只是为了公开底层的键集合.. .)。任何想法将不胜感激!
编辑:我使用的是 C# 2.0,因此没有可用的扩展方法,例如 .ToList(很容易)。
【问题讨论】:
-
部分问题在于 ReadOnlyCollection
是 IList ,而不仅仅是 ICollection。 -
这太糟糕了,我讨厌 ReadOnlyCollection 不支持 IEnumerable
或至少 ICollection 。 -
@Shimmy: ReadOnlyCollection
确实实现了 IEnumerable 。 -
不,除了
IList<T>,你不能初始化 ReadOnlyCollection。 -
真;我误解了你所说的“支持”是什么意思。构造函数采用 IList
; ReadOnlyCollection 实现 IList 、ICollection 、IEnumerable 和接口的非泛型版本。
标签: c# generics dictionary collections c#-2.0