【发布时间】:2023-03-03 06:27:23
【问题描述】:
考虑以下 (LinqPad) 示例。 X 类中的 ToString 被标记为虚拟。为什么这里的输出不等于“嗨,我是 Y,嗨,我是 X”,而是打印了类型名?当然标记 ToString virtual 是错误的,因为它在 Object 中定义为 virtual,我只是想了解这里发生了什么。
void Main()
{
Y y = new Y();
Console.WriteLine(y);
}
// Define other methods and classes here
class X
{
public virtual String ToString()
{
return "Hi, I'm X";
}
}
class Y : X
{
public override String ToString()
{
return "Hi, I'm Y, " + base.ToString();
}
}
【问题讨论】:
-
这是一个关于虚拟和非虚拟方法的精彩演示:msdn.microsoft.com/en-us/library/aa645767%28v=vs.71%29.aspx
标签: c# virtual overriding