Непосредственно перед первым использованием класса среда выполнения dotnet создает объект в куче, в котором хранится вся информация об используемом классе.Это включает в себя статические поля, таблицу методов, которая указывает на методы, доступные в классе, указатель объекта типа (подробнее об этом в секунду) и блок синхронизации (используется для блокировки объекта).
Все объектыиметь указатель типа объекта, который указывает на объект, который хранит информацию о классе.
Так, например, если у вас есть объект Person, у него будет указатель типа объекта, который указывает на объект в куче, в котором хранится вся информация о персоне.Этот объект типа «Человек» также будет иметь указатель на объект типа, который указывает на объект System.Type, поскольку его тип - System.Type (это объект, который хранит информацию о типе объекта).
КонечноSystem.Type, будучи объектом в куче, также имеет указатель на объект типа, который указывает на информацию о его типе.Как вы, наверное, догадались - он указывает на себя, поскольку объект System.Type является объектом System.Type.
Когда вы вызываете GetType () для объекта, он просто возвращает адрес, сохраненный в указателе объекта определенного типа объектов.