c# - 为什么 ICollection<T> 同时实现 IEnumerable<T> 和 IEnumerable

标签 c# design-patterns generics collections ienumerable

为什么 ICollection<T>同时实现 IEnumerable<T>IEnumerable

这样做的目的是什么? IEnumerable如何受益ICollection<T>

最佳答案

IEnumerable<T>本身强制任何实现也实现非通用 IEnumerable .这是安全的,原因与 IEnumerable<out T> 相同。从 .NET 4 开始是协变的...您始终可以转换 Tobject对于非通用形式。

基本上这意味着如果您的代码使用 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/

相关文章:

c# - 使用 C# 在 TextBox 中准备语句查询

c# - 将十六进制字符串转换为动态原始类型

c - 就地与返回 C 中的新设计模式

java - 哪种设计模式允许基于运行时类型抽象功能?

c# - 使用泛型重构

generics - 具有通用方法的特征的动态调度

c# - 为什么在 Java 和 C# 中处理方法歧义存在这种差异?

c# - Web 管理面板作为独立程序集

design-patterns - 策略模式和依赖注入(inject)有什么区别?

c# - 如何在 C# 中查找通用控件的标记