在大多数地方我看到建议在你的类中从
编辑:此外,微软文档声明如下: 如果泛型接口只将其类型参数用作返回值,则泛型接口可以从非泛型接口继承。在.NET Framework类库中,因为
但尽管如此,人们可以很好地从
IComparable
和IComparable<T>
继承,以提供与非泛型集合的兼容性。我的问题是为什么IComparable<T>
默认情况下没有继承IComparable
呢?这样可以实现向后兼容。例如,IEnumerable<T>
确实继承自IEnumerable
,那么为什么不对IComparable
做同样的事情呢?我读到了一些关于变异的文章,但我仍然不太明白为什么要设计成这样。我尝试创建一个带有相同架构的接口小例子,它可以按预期工作。编辑:此外,微软文档声明如下: 如果泛型接口只将其类型参数用作返回值,则泛型接口可以从非泛型接口继承。在.NET Framework类库中,因为
IEnumerable<T>
只在GetEnumerator
的返回值和Current
属性的getter中使用T,所以IEnumerable<T>
继承自IEnumerable
。但尽管如此,人们可以很好地从
IComparable<T>
继承IComparable
(如果创建具有相同架构的接口)。
IComparable<T>
一开始就没有继承自IComparable
。 - Andrew Petukhov