} namespace ClassLibrary1 {using System;
ыло интересно почемуNullable<T>
такое тип значения, если он предназначен для имитации поведения ссылочных типов? Я понимаю такие вещи, как давление GC, но я не чувствую себя убежденным - если мы хотим иметьint
действуя как ссылка, мы, вероятно, в порядке со всеми последствиями наличия реального типа ссылки. Я не вижу причин, почемуNullable<T>
это не просто коробочная версияT
структура.
Как тип значения:
он все еще должен быть упакован и распакован, и более того, бокс должен немного отличаться от «нормальных» структур (для обработки null-значимых обнуляемых как реальныхnull
)при проверке на ноль это нужно обрабатывать по-разному (сделано просто вEquals
нет реальной проблемы)это изменчиво, нарушая правило, что структуры должны быть неизменными (хорошо, это логически неизменным)это должно иметь специальное ограничение, чтобы запретить рекурсию, какNullable<Nullable<T>>
Не делаетNullable<T>
тип ссылки решить эти проблемы?
Перефразировано и обновлено:
Я немного изменил свой список причин, но мой общий вопрос все еще открыт:
Как будет ссылочный типNullable<T>
быть хуже, чем текущая реализация типа значения? Это только давление в GC и «маленькое, неизменное» правило? Мне все еще странно ...