是否可以在子类中用不同的类型参数覆盖方法的返回值?

本文关键字:类型参数 覆盖 方法 返回值 子类 是否 | 更新日期: 2023-09-27 18:01:33

是否有可能在重写List时更改类型?前提是它是兼容的?

例子:

public class Base
{
     public virtual List<Object> SomeList { get; set; }
}
public class Foo : Base
{
     public override List<Bar> SomeList { get; set; }
}

如果没有,有没有简单的解决方法?

至于我想做什么:我想有一个基类,将作为一个实现(不能是一个接口然而)的客户端和服务器类,将有自己的属性。客户端和服务器将有不同版本的Bar类,因此它们需要有自己的列表。

是否可以在子类中用不同的类型参数覆盖方法的返回值?

不,不可能。对于你想要的,如果你使用一个泛型属性,它是可行的。

public class Base<T>
{
    public List<T> { get; set; }
}

那么你的Foo类将是:

public class Foo : Base<Bar>
{
}

这样,您的派生类(称为Foo)就可以访问类型为Bar的列表将被声明到它的基类。

这是不可能的,但根据您想要实现的目标,您可以在示例中使用接口作为List类型。