Почему GetType() возвращает тип наследника после апкаста?
Подскажите, пожалуйста, почему при таком коде метод GetType() определяет тип экземпляра как Derived, если он был приведен к базовому?
class Base {}
class Derived : Base { }
static void Main()
{
Base baseClass = new Derived() as Base;
Console.WriteLine(baseClass.GetType());
}
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
Потому что baseClass ссылается на Derived, хоть тип переменной и Base.
as Base - не нужно (оно ничего не делает), так как наследник и так assignable переменной родительского типа.
static void Main()
{
object o1 = new Base();
object o2 = new Derived();
Console.WriteLine(o1.GetType()); // Base
Console.WriteLine(o2.GetType()); // Derived
}