Does normal object base type - derived type conversion come under Covariance and contravariance?
协方差和逆变为数组、委托和泛型参数类型提供隐式引用转换。
1 2 3 4 5 | IEnumerable<string> strings = new List<string>(); IEnumerable<object> objects = strings; Action<object> actObject = SetObject; Action<string> actString = actObject; |
正常的对象基类型派生类型转换是否符合下面所述的协方差和反方差?
1 2 3 4 5 |
如果是,运行时如何处理它,如果不是,为什么?
协方差和反方差只适用于参数多态性,例如当一个类型有另一个类型作为参数时。这是因为有些用例甚至可能编译得很糟糕,它们的类型不健全。例如这样。
第二个示例只是简单的数据多态性,不需要应用协方差和逆变,因为这些用例不适用。