Поделиться через


Класс System.Nullable

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Класс поддерживает значения типов Nullable, которые могут быть присвоены null.

Тип, как утверждается, имеет значение NULL, если он может быть назначен или может быть назначен null. Это означает, что тип не имеет никакого значения. По умолчанию все ссылочные типы, например String, имеют значение NULL, но все типы значений, например Int32, не являются.

В C# и Visual Basic тип значения помечается как допускающий значение NULL с помощью ? нотации после типа значения. Например, int? в C# или Integer? в Visual Basic объявляет целочисленный тип значения, который можно назначить null.

Класс Nullable обеспечивает дополнительную поддержку Nullable<T> структуры. Класс Nullable поддерживает получение базового типа типа, допускающего значение NULL, и операции сравнения и равенства пар типов, допускающих значение NULL, базовый тип которого не поддерживает универсальные операции сравнения и равенства.

Бокс и распаковка

Если задан тип, допускающий значение NULL, среда CLR автоматически настраивает базовое значение Nullable<T> объекта, а не Nullable<T> сам объект. То есть, если HasValue свойство имеет trueзначение, содержимое Value свойства отображается в поле.

Если свойство типа, допускающего значение NULL, равно HasValue, то результатом операции бокса является false. Если базовое значение типа, допускающего значение NULL, распаковано, среда CLR создает новую Nullable<T> структуру, инициализируемую базовому значению.