Обнуляемое целое число в .NET - PullRequest
8 голосов
/ 29 апреля 2010

Что такое обнуляемое целое число и где его можно использовать?

Ответы [ 6 ]

17 голосов
/ 29 апреля 2010

Обнуляемое целое число int? или Nullable<int> - это тип значения в C #, значение которого может быть null или целочисленное значение. По умолчанию он равен null вместо 0 и полезен для представления таких вещей, как value not set (или того, что вы хотите, чтобы оно представляло).

8 голосов
/ 29 апреля 2010

Обнуляемое целое число может использоваться различными способами. Может иметь значение или ноль. Как здесь:

int? myInt = null;

myInt = SomeFunctionThatReturnsANumberOrNull()

if (myInt != null) {
  // Here we know that a value was returned from the function.
}
else {
  // Here we know that no value was returned from the function.
}

Допустим, вы хотите знать возраст человека. Он находится в базе данных, если человек представил свой возраст.

int? age = GetPersonAge("Some person");

Если, как и большинство женщин, человек не указал свой возраст, то база данных будет содержать ноль.

Затем вы проверяете значение age:

if (age == null) {
  // The person did not submit his/her age.
}
else {
  // This is probably a man... ;)
}
0 голосов
/ 04 декабря 2013

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

Тип значения по умолчанию (например, Int) не может быть нулевым. Выдает ошибку при попытке присвоить нулевое значение. Но обнуляемые типы не будут этого делать.

Спасибо.

0 голосов
/ 29 апреля 2010

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

0 голосов
/ 29 апреля 2010

INT? год;

вы можете поместить их в действия контроллера, и если URL-адрес не содержит параметр year, year будет иметь значение null, в отличие от значения по умолчанию 0, которое может быть допустимым значением для вашего приложения.

0 голосов
/ 29 апреля 2010

Я предполагаю, что вы имеете в виду int? x;, что является сокращением для Nullable<int> x;

Это способ добавления нулей к типам значений, который полезен в сценариях, таких как обработка базы данных, где значения также могут быть установлены на ноль. По умолчанию обнуляемый тип содержит нуль, и вы используете HasValue, чтобы проверить, было ли ему задано значение. Вы можете присвоить значения и использовать их как обычный тип значения.

...