Max*_*ich 5 c# generics collections ienumerable design-patterns
为什么ICollection<T>同时实现IEnumerable<T>和IEnumerable?
ICollection<T>
IEnumerable<T>
IEnumerable
这样做的目的是什么?IEnumerable受益如何ICollection<T>?
Jon*_*eet 12
IEnumerable<T>本身强制任何实现也实现非泛型IEnumerable.这是安全的,对于相同的原因IEnumerable<out T>是作为协变.NET 4的......你可以随时转换T到object了非一般形式.
IEnumerable<out T>
T
object
基本上这意味着如果你有使用类型参数的代码IEnumerable,你仍然可以用类似的东西来调用它List<T>.
List<T>
Eric Lippert 最近写了一篇关于为什么集合最终实现了许多接口的博客文章,而Brad Abrams 在2005年写了一篇关于具体IEnumerable<T>/ IEnumerable决定的博客文章.
Ily*_*gan 9
非通用接口用于向后兼容.如果您使用泛型编写代码并希望将您的集合传递给用.NET 1.0编写的某个模块(没有泛型),您仍然希望这成功,并且您希望旧方法能够遍历它.
归档时间:
14 年,9 月 前
查看次数:
1118 次
最近记录: