考慮以下(LinqPad)示例。類X中的ToString標記爲虛擬。爲什麼這裏的輸出不等於「嗨,我是Y,你好,我是X」,而是打印了typename?當然,標記ToString虛擬是錯誤的,因爲它在Object中被定義爲虛擬,我只是試圖理解這裏發生的事情。在基類中標記ToString虛擬,會發生什麼?
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();
}
}
這是一個關於虛擬和非虛擬方法的很棒的演示:http://msdn.microsoft.com/en-us/library/aa645767%28v=vs.71%29.aspx – 2011-02-09 18:43:08