Это создает новый виртуальный метод в X
с именем ToString()
, который скрывает Object.ToString()
.Так что если у вас есть:
Y y = new Y();
X x = y;
Object o = y;
Console.WriteLine(y.ToString()); // Shows "Hi, I'm Y, Hi, I'm X";
Console.WriteLine(x.ToString()); // Shows "Hi, I'm Y, Hi, I'm X";
Console.WriteLine(o.ToString()); // Calls object.ToString; shows just "Y"
Вызов только
Console.WriteLine(y);
эквивалентен последней строке, поэтому имя типа печатается.
По сути, вашX.ToString
метод должен переопределить метод object.ToString()
:
public override String ToString()
{
return "Hi, I'm X";
}