【发布时间】:2014-08-01 06:20:56
【问题描述】:
协变和逆变为数组、委托和通用参数类型提供隐式引用转换。
IEnumerable<string> strings = new List<string>();
IEnumerable<object> objects = strings;
Action<object> actObject = SetObject;
Action<string> actString = actObject;
普通对象基类型派生类型转换是否属于协变和逆变,如下所述?
ChildClass childobj=new ChildClass;
BaseClass baseobj=childobj;
BaseClass baseobj=new BaseClass;
ChildClass childobj= (BaseClass) baseobj;
如果是,运行时如何处理它,如果不是,为什么?
【问题讨论】:
-
例3和例4不是协变和逆变的。它们只是参考转换。示例 4 无法编译。
标签: c# .net covariance contravariance