C#“找不到合适的方法来覆盖” – 但是有一个

我无法在C#中覆盖父类的方法。父类的设置如下:

public class Base {
    public Base(Game1 game)
    {
        this.game = game;
    }

    public virtual void Draw()
    {
    }
}

…和小孩班:

public class Ext : Base {
    public Ext(Game1 game) : base(game)
    {
    }

    public override void Draw(SpriteBatch batch)
    {
    }
}

我知道我以前已经成功地覆盖了父方法,现在我可能忽略了一些非常简单的东西,这是什么呢?

编辑:实际上是一个打字错误:在实际的脚本中,Ext从Base派生。问题仍然存在。感谢您的快速回答,但是。 🙂

您的代码(在编辑之后)编译好,所以别的是错的,不在你发布的内容。

有些东西要检查,一切都公开吗?这包括类和方法。

重载不同参数?

你确定基地是你认为的班级吗?即是否有另一个同名的类,它实际上是引用?

编辑:

要回答您的评论中的问题,您不能覆盖具有不同参数的方法,也不需要。您可以创建一个新方法(使用新参数),而不使用override关键字,它将正常工作。

如果您的意图是禁止在没有参数的情况下调用基本方法,则可以将方法标记为受保护而不是public。这样只能从继承自Base的类中调用

翻译自:https://stackoverflow.com/questions/6446007/c-sharp-no-suitable-method-found-to-override-but-there-is-one

转载注明原文:C#“找不到合适的方法来覆盖” – 但是有一个