考虑以下(LinqPad)示例。类X中的ToString被标记为虚拟的。为什么这里输出不等于“Hi,I'm Y,Hi,I'm X”,而是打印了类型名?当然,标记ToString为虚拟的是错误的,因为它在Object中已经被定义为虚拟的,我只是想理解这里发生了什么。
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();
}
}