【发布时间】:2013-04-25 10:49:23
【问题描述】:
我想知道调用打印“double in derived”的方法的原因是什么。我在 C# 规范中没有找到任何线索。
public class A
{
public virtual void Print(int x)
{
Console.WriteLine("int in base");
}
}
public class B : A
{
public override void Print(int x)
{
Console.WriteLine("int in derived");
}
public void Print(double x)
{
Console.WriteLine("double in derived");
}
}
B bb = new B();
bb.Print(2);
【问题讨论】:
-
我可以破译7.4.2.2和7.4.2.3的规则,你可能比我聪明,但它会在某个地方。
-
@spender,它可能在里面,但是写得不好:)。
-
这个问题已经回答了。看到这个线程:stackoverflow.com/questions/2821620/…
-
@cvraman,即使给出相同的结果,该示例也略有不同。在这种情况下,整数文字也是 object 类型的(正在发生扩大转换)。然而,在上面给出的示例中,发生了隐式转换(从 int 到 double。)
标签: c# inheritance overloading