IEnumerator包含MoveNext(),Reset()并Current作为其成员.现在假设我已将这些方法和属性移动到IEnumerable接口并删除了GetEnumerator()方法和IEnumerator接口.
现在,实现的类的对象IEnumerable将能够访问方法和属性,因此可以迭代.
IEnumerator接口的存在如何解决这些问题?我想知道为什么Covariance和Contravariance这两个术语在编程领域被命名.通常在概率论或统计学中听到这些术语,表明相对于均值测量的量的扩散.
我知道Covariance能够将更具体类型的表达式分配给不太具体的类型的变量,但是,还有另一种解释吗?
与这两个领域相关的示例将是有帮助的.