Ответ 1
Тип времени выполнения является частью данных самого объекта. Это почти похоже на скрытое поле только для чтения в System.Object
, а GetType()
просто возвращает значение этого поля. (Это не совсем так просто, но это разумное приближение.)
Обратите внимание, что эта информация необходима для того, чтобы среда CLR работала над тем, где отправлять виртуальные методы, поэтому, если бы вы думали, что это сработает, если GetType
были виртуальными, спросите себя, как CLR узнает, какую реализацию вызывать.