为什么 ICollection<T>
同时实现 IEnumerable<T>
和 IEnumerable
?
这样做的目的是什么? IEnumerable
如何受益ICollection<T>
?
最佳答案
IEnumerable<T>
本身强制任何实现也实现非通用 IEnumerable
.这是安全的,原因与 IEnumerable<out T>
相同。从 .NET 4 开始是协变的...您始终可以转换 T
至 object
对于非通用形式。
基本上这意味着如果您的代码使用 IEnumerable
类型的参数, 你仍然可以用类似 List<T>
的方式来调用它.
Eric Lippert 写了一个 blog post recently关于为什么集合最终会实现许多接口(interface),Brad Abrams 写了一篇 blog post back in 2005关于具体IEnumerable<T>
/IEnumerable
决定。
关于c# - 为什么 ICollection<T> 同时实现 IEnumerable<T> 和 IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5548040/