IEquatable <T>可能已被声明为T中的逆变,因为它只在输入位置使用T(或者,等效地,U是T的子类型应该暗示IEquatable <T>是[IE]的一个子类型<U >).
那么,为什么BCL团队没有使用'in'关键字对它进行注释(针对C#4.0),就像他们使用许多其他通用接口(如完全类似的IComparable)一样?
Meh*_*ari 13
我认为这主要是出于哲学原因而非技术限制 - 因为简单地注释界面是完全可能的.IEquatable<T>
用于比较相同类型的对象以获得完全相等.通常认为超类的实例等于子类的实例.在这个意义上的平等也意味着类型平等.这有点不同IComparable<in T>
.在不同类型中定义相对排序顺序是明智的.
对实施者的说明:
将
IEquatable<T>
接口的type参数替换为实现此接口的类型.
这句话进一步说明了IEquatable<T>
在单一具体类型的实例之间工作的事实.
归档时间: |
|
查看次数: |
712 次 |
最近记录: |