可能重复:
为什么 C# 4.0 中的类没有通用差异?
作为一名新手程序员,我有几个关于 .NET 4 的变化的问题。与其说是它是如何工作的,不如说是为什么某些东西没有变化,以及其他人是否会觉得这很有用。
问题一:
我知道接口和委托在 .NET 4 中可以是协变/逆变的,但为什么不是类呢?所以,问题1:
List(of BaseClass) = List(of DerivedClass)
这在某种程度上不安全吗?这不会有用吗?
问题2:
问题 2 源自问题 1,但可能更多地处理签名而不是方差。假设我有一个带有 MustOverride 成员的 MustInherit 类:
Public MustInherit Class TestBase
Public MustOverride Property SomeClass as BaseClass
End Class
在派生类中,为什么不能重写 SomeClass 并返回一个 Derived Class Of BaseClass?这不安全吗?仅仅是签名不检查继承关系吗?
Public Class TestSpecific
Inherits TestBase
Public Overrides Property SomeClass as DerivedClass
End Class
任何关于为什么在 .NET 4 中不允许这样做的见解将不胜感激。