繁体   English   中英

无法从重写的基类方法返回`this`

[英]Cannot return `this` from overridden base class method

即使签名都适当,我也无法从具体的方法实现中返回this 这里的想法是拥有一个流畅的生成器,因此子类BuildNewCar()需要返回子类类型SimpleCarBuilder

public class Car {}

abstract class BaseCarBuilder
{
    public abstract T BuildNewCar<T>();
}

class SimpleCarBuilder : BaseCarBuilder
{
    Car _car;

    public override SimpleCarBuilder BuildNewCar<SimpleCarBuilder>()
    {
        _car = new Car();
        return this;
    }
}

我不断得到:

无法将类型'SimpleCarBuilder'隐式转换为'SimpleCarBuilder'

编译器将SimpleCarBuilder视为通用类型的名称,而不是要使用的实际类型。 它不能将实际类型SimpleCarBuilder转换为名为SimpleCarBuilder的通用类型参数,该参数实际上可以表示任何类型。

如果您使用实现抽象类功能,则会看到编译器使用T作为通用类型参数名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM