Почему 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
 }
→ Ссылка