Ответ 1
Самые основные объекты в .Net не имеют пользовательских данных, а только некоторые сведения о внутренней платформе о их типе и местоположении в памяти их фактических данных. С точки зрения пользователя (разработчика) они "просто существуют", и они отличаются только своей "личностью". Их класс не может быть расширен каким-либо образом. Я ничего не вижу в клонировании.
Более сложные объекты производятся от чего-то и, в конечном счете, производятся от базового объекта. В .Net нет копировальной конструкции и глубокой копирующей семантики, поэтому на уровне неосновных объектов до сих пор нет смысла клонировать что-либо.
На уровне метаданных каждый объект несет информацию о том, к какому классу (классам) он принадлежит. Метаинформация является общей, и все объекты того же класса просто указывают на общую метаинформацию. Все еще нет смысла клонировать что-либо.
Таким образом, я был бы очень удивлен, если бы создание объекта было сделано с использованием прототипа-клонирования. Я не знаю с абсолютной уверенностью, но я уверен, что это не так. Я почти уверен, что создание объекта - это просто выделение небольшого блока памяти и, возможно, установка нескольких указателей внутри его заголовка.
Это, безусловно, проверяется, если кто-то * ngen * s некоторый код и разбирает его, чтобы увидеть, как работает оператор new():)