这种情况在c#方法继承中是否可行

Jon*_*nna 4 c# inheritance

我想知道在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)

我不希望每次在子类方法中对基础参数进行类型转换.那么,这可能吗?

Eri*_*ert 7

该特征称为形式参数类型协方差.c#不支持它.它也不是类型安全的.

它的两个变种是类型安全.形式参数逆变和返回类型协方差.C#支持通用委托转换和方法组委派转换,但不支持虚拟方法重写.

你恐怕在这里运气不好.