Тип значения против ссылочного типа - класс объекта C # - PullRequest
7 голосов
/ 30 июля 2009

если типы значений и ссылочный тип относятся к типу объекта, который является ссылочным типом, то как тип значения является типом значения, а ссылочный тип является ссылкой, когда все они происходят из ссылочного типа.

1 Ответ

12 голосов
/ 30 июля 2009

В основном это чит; -p

Любой struct (т.е. все, что унаследовано от ValueType), обрабатывается семантикой типа значения. Но есть преобразование бокса в object при необходимости; это означает, что если вы приведете struct к object, он создаст специальный объект (в управляемой куче), содержащий данные (как клон) из вашего значения *.

Штучная версия относится к справочному типу. Вы можете распаковать это (путем приведения) обратно к struct версии, которая переворачивает это (копирует данные клонов из объекта в куче в ваше локальное значение).


* = если только это не пустое Nullable<T>, в которое вставляется null; аналогично null распаковывает в пустую Nullable<T>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...