Рассмотрим следующий пример (LinqPad). ToString в классе X помечен как виртуальный. Почему вывод здесь не равен «Привет, я есть Y, Привет, я есть X», но вместо этого печатается имя типа? Конечно, маркировка ToString virtual неправильна, потому что она определена в 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 –