重载和覆盖问题

时间:2019-01-31 07:03:51

标签: c# override overloading

我要覆盖方法(method(int x)):

public class A 
{
    public virtual void method(int x)
    {
        Console.WriteLine("base");
    }
}

public class B : A
{
    public override void method(int x)     
    { 
        Console.WriteLine("overridden");
    }

    public void method(Double x)    
    {
        Console.WriteLine("overloaded");
    } 
} 

我这样称呼它:

public static class Program  
{   
    public static void Main() 
    {
        B obj = new B();
        obj.method(1);
    } 
}

由于某些原因,打印了“重载”,而不是我期望的“重载”。如果我将class B更改为以下内容,则Main方法现在将显示“覆盖”:

public class B
{
    public void method(int x)     
    { 
        Console.WriteLine("overridden");
    }

    public void method(Double x)    
    {
        Console.WriteLine("overloaded");
    } 
} 

为什么会这样?

1 个答案:

答案 0 :(得分:0)

您没有覆盖该功能,而是在重载该功能。如果将1强制转换为int,它将正常工作。