объект типа некоторого объекта базового типа (например, класс Employee {}) имеет тип System.Type
Это верно, но несколько сбивает с толку, Объект типа любой объект имеет тип System.Type.
Метод GetType фактически возвращает указатель на объект типа объекта
Также true. Мы называем это ссылкой, а не указателем, но это техническая сложность.
, поэтому звучит так, будто System.Type - это объект самого базового типа, к которому относятся все объекты типа.
Это не следует за предыдущими утверждениями. System.Object - это самый базовый объект, из которого происходят все остальные объекты. System.Type является объектом, как и любой другой, поэтому он является производным от System.Object. Как на вашей иллюстрации.
Подобные обсуждения могут немного запутать. Крайне важно различать guish между типом объекта, т.е. Employee
, и типом объекта для указанного объекта, т. Е. System.Type
.
. Рассмотреть это с точки зрения языкового дизайна. Полезно иметь базовый тип, от которого происходят все объекты, чтобы программист мог обходить систему типов при необходимости, и иметь некоторые базовые c методы, такие как ToString и GetHashcode. Также полезно позволить программисту инспектировать и напрямую работать с системой типов языка. Мы называем это «отражением». System.Type является частью этой системы, она описывает информацию о типе объектов. Но это так же, как и любой другой тип, поэтому он должен быть производным от System.Object.