我想知道在C#继承中是否可以使用这种情况.
我们假设我们有3个班级.
public class Base
{
public abstract void SomeMethod(Base param);
}
public class ChildA : Base
{
public override void SomeMethod(ChildA param);
}
public class ChildB : Base
{
public override void SomeMethod(ChildB param);
}
Run Code Online (Sandbox Code Playgroud)
我不希望每次在子类方法中对基础参数进行类型转换.那么,这可能吗?
该特征称为形式参数类型协方差.c#不支持它.它也不是类型安全的.
它的两个变种是类型安全.形式参数逆变和返回类型协方差.C#支持通用委托转换和方法组委派转换,但不支持虚拟方法重写.
你恐怕在这里运气不好.