【发布时间】:2012-09-20 14:23:51
【问题描述】:
今天我想出了一个有趣的问题。我注意到以下代码:
class A
{
public A()
{
Print();
}
public virtual void Print()
{
Console.WriteLine("Print in A");
}
}
class B : A
{
public B()
{
Print();
}
public override void Print()
{
Console.WriteLine("Print in B");
}
}
class Program
{
static void Main(string[] args)
{
A a = new B();
}
}
打印
Print in B
Print in B
我想知道为什么它会打印两次“Print in B”。
【问题讨论】:
-
你不会每天都得到@JonSkeet 的答案!向我的朋友学习 Stack Overflow 的尤达。
-
你得到一个编译器警告,告诉你这个类应该被密封?
-
@JohanLarsson 不是。没有警告,编译流畅。 VS 2010, 4.0 框架
标签: c# inheritance virtual