我是C#的新手。我了解继承的概念。我想知道是否可以重载重写的方法,我用它搜索了一下,但找不到一个好的答案。我也尝试以下代码。在代码中,我正在访问重写方法的重载方法,当我调试该程序时,它不会在屏幕上返回任何输出。所以我对重写的方法是否可以重载感到困惑?

public class method1
{
    public virtual void PrintName()
    {
        Console.WriteLine("Hello world");
    }
}

public class method2 : method1
{
    public override void PrintName()
    {
        Console.WriteLine("Hello World Overriden");
    }

    public string PrintName(String strPolymorphism)
    {
        return strPolymorphism;
    }
}

class Program
{
    static void Main(string[] args)
    {
        method2 m2 = new method2();
        m2.PrintName("method overloading is possible?");
    }
}

最佳答案

您的m2.PrintName仅返回它收到的字符串。它没有任何作用。如果这样做,您将看到输出。

public string PrintName(String strPolymorphism)
{
    this.PrintName(); // first write the output of `PrintName` to the console

    Console.WriteLine("Called PrintName with: " + strPolymorphism);
    return strPolymorphism;
}


重载m2.PrintNamePrintNamemethod2类中具有不同签名的覆盖的method1方法无关。签名很重要。很多!

10-08 09:00