Почему int не может быть null? Как nullable int (int?) работать в C#?

Я новичок в C# и только что узнал, что объекты могут быть null в C#, но int Не могу.

также как nullable int (int?) работа в C#?

6 ответов


int является примитивным типом и только ReferenceTypes (объекты) являются nullable. Вы можете сделать int nullable, обернув его в объект:

System.Nullable<int> i;

или

int? i;

http://msdn.microsoft.com/en-us/library/2cf62fcy (v=против 80).aspx


int-это тип значения. Это действительно тип Int32. Объекты, которые могут быть nullable являются ссылочными типами. На базовом уровне разница заключается в том, что тип значения будет хранить значение с переменной, где ссылочный тип будет хранить ссылку на значение. Ссылка может быть null, что означает, что он не указывает на значение. Где тип значения всегда имеет значение.

Nullable обертывает тип значения, чтобы позволить вам иметь возможность быть null. Используя инт? это просто компилятор ярлык для объявления типа nullable.


вы можете иметь nullable int, используя int? или Nullable<int> оба точно так же.


типы значений, такие как int содержат прямого значения, а не ссылки типа ReferenceType. Значение не может быть null, но ссылка может быть null, что означает, что она указывает ни на что. В ценности не может быть ничего. Значение всегда содержит какое-то значение

Nullable или Nullable типы-это специальные типы значений, которые в дополнение к обычным значениям типов значений также поддерживают дополнительное нулевое значение, как и ссылочные типы


объекты являются ссылочными типами, и они не могут ссылаться ни на что или NULL, однако int-это тип значения, который может содержать только значение и не может ссылаться ни на что.


примитивный тип int не может выражать null в двоичном представлении, но Nullable<int> добавлен дополнительный байт для выражения нулевой информации этого значения.