dostuff()方法是否可以在不编辑A类的情况下打印“B did stuff”?如果是,我该怎么做?

class Program
{
    static void Main(string[] args)
    {
        A a = new A();
        B b = new B();

        a.doStuff();
        b.doStuff();

        Console.ReadLine();
    }
}

class A
{
    public void doStuff()
    {
        Console.WriteLine("A did stuff");
    }
}

class B : A
{
    public void doStuff()
    {
        Console.WriteLine("B did stuff");
    }
}

我正在修改一个蒸汽游戏,泰瑞亚。我不想反编译和重新编译,因为这会和蒸汽搞得一团糟。我的程序通过XNA“注入”Terraria。我可以从XNA中使用UpDebug()和DRAW()方法来处理一些事情。但这是非常有限的。我不想重写基方法来修改更多的东西(例如worldGen)。

最佳答案

是的,如果您在doStuff中声明virtualA,然后在override中声明B

class A
{
    public virtual void doStuff()
    {
        Console.WriteLine("A did stuff");
    }
}

class B : A
{
    public override void doStuff()
    {
        Console.WriteLine("B did stuff");
    }
}

关于c# - 从父级调用子类方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9067885/

10-11 23:45