我要覆盖方法(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");
}
}
为什么会这样?
答案 0 :(得分:0)
您没有覆盖该功能,而是在重载该功能。如果将1强制转换为int,它将正常工作。