协方差和逆变为Arrays,Delegates和Generic参数类型提供隐式引用转换。
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;
如果是这样,运行时如何处理它,如果不是为什么?
答案 0 :(得分:0)
协方差和逆变量仅适用于参数多态,例如。当一种类型具有其他类型作为参数时。这是因为一些用例可能会编译,即使它们没有正确输入。例如like this。
你的第二个例子就是简单的数据多态,不需要应用协方差和逆变,因为这些用例不适用。