Почему Nullable < T> - это структура?

Мне было интересно, почему Nullable является типом значения, если он разработан для имитации поведения ссылочных типов? Я понимаю такие вещи, как давление сборщика мусора, но я не уверен - если мы хотим, чтобы int действовал как ссылка, мы, вероятно, согласны со всеми последствиями наличия реального ссылочного типа. Я не вижу причин, по которым Nullable - это не просто упакованная версия структуры T .

Как тип значения:

  1. его все еще нужно упаковывать и распаковывать, и более того, упаковка должна немного отличаться от "обычных" структур (чтобы обрабатывать нулевые значения, допускающие значение NULL, как реальные null )
  2. , его нужно обрабатывать по-другому при проверке на null (выполнено просто в равно , нет реальной проблемы)
  3. он изменяемый, нарушая правило, согласно которому структуры должны быть неизменяемыми (хорошо, это логически неизменяемо)
  4. необходимо иметь специальное ограничение для запрета рекурсии, например Nullable >

Не решает ли Nullable ссылочный тип?

перефразировано и обновлено:

Я немного изменил свой список причин, но мои общие вопрос все еще открыт:

Чем ссылочный тип Nullable будет хуже, чем текущая реализация типа значения? Это только давление GC и "маленькое, неизменное" правило? Мне все еще кажется странным ...

24
задан NOtherDev 26 November 2010 в 08:15
поделиться