正常的对象基类型-派生类型转换是否属于协方差和逆变?

本文关键字:方差 属于 是否 类型转换 对象 基类 类型 派生 | 更新日期: 2023-09-27 18:15:59

协方差和逆变性为数组、委托和泛型参数类型提供了隐式引用转换。

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;

如果是,运行时如何处理,如果不是,为什么?

正常的对象基类型-派生类型转换是否属于协方差和逆变?

协方差和逆变性仅适用于参数多态性,例如。当一个类型有另一个类型作为参数时。这是因为有些用例即使没有正确输入也可以编译。例如:

您的第二个示例只是简单的数据多态性,没有必要应用协方差和逆变性,因为这些用例不适用。