Как создать структуру с поддержкой нулевого значения? - PullRequest
12 голосов
/ 03 июля 2011

Я новичок в C #. В C # я не могу установить значение структуры в нуль, как я могу создать структуру с поддержкой нулевого значения?

Ответы [ 4 ]

17 голосов
/ 03 июля 2011

Структуры и типы значений могут быть обнулены с помощью класса Generic Nullable <>, чтобы обернуть его. Например:

Nullable<int> num1 = null;

C # предоставляет языковую функцию для этого, добавляя знак вопроса после типа:

int? num1 = null;

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

MSDN Объяснение: Обнуляемые типы (c #)

6 голосов
/ 03 июля 2011

Вы можете использовать Nullable<T> с псевдонимом в C #. Имейте в виду, что сама структура на самом деле не равна нулю (компилятор обрабатывает ноль по-другому за кулисами). Это больше Тип опции .

Struct? value = null;

Как упоминает @CodeInChaos, Nullable<T> упаковывается только в ненулевое состояние.

Обнуляемые типы

Типы бокса Nullable

4 голосов
/ 03 июля 2011

вы можете использовать Nullable<T> для структур или сокращенную форму (?) Того же самого:

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

struct Foo
{
}

Nullable<Foo> foo2 = null; 
Foo? foo = null; //equivalent shorthand form
3 голосов
/ 22 июля 2014

Поскольку «Структура» не является ссылочным типом, вы не можете назначить «ноль» обычным способом.поэтому вам нужно использовать следующую форму, чтобы сделать ее "обнуляемой"

[Имя структуры]?[Имя переменной] = null

например.

Color? color = null;

, затем вы можете присвоить null для объекта, а также проверить обнуляемость с помощью условных операторов.

...