Для чего может понадобится обнуление значимого типа?

int? Value = null;

null же для ссылочных типов, и ссылочные типы по умолчанию равны null, значимые равны 0; Тогда в каком случае может понадобится присвоение значимому типу null?


Ответы (2 шт):

Автор решения: aepot

Например для совместимости с некоторыми структурами данных в JSON при сериализации/десериализации.

Представьте, что сервер может прислать такой JSON ответ

{
  "value": 0
}

А может такой

{
  "value": null
}

Или вообще такой

{
}

Как отличить, 0 пришёл или ничего? Без использования nullable типа никак. Точнее это было бы сильно сложнее.

public class Model
{
    public int? Value { get; set; }
}

А так, зависит от потребностей. Это всего-лишь ещё группа типов в копилку к существующим.

→ Ссылка
Автор решения: rotabor

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

Если в такой ситуации использовать 0, то это уже совершенно определённое количество.

Для работы с такими данными предусмотрен тип "Nullable<T>":

int? Value = null;
if (Value.HasValue) ...

Широкое применение такие типы находят при работе с базами данных, в которых есть возможность объявлять любое поле nullable. Такие поля как раз и описываются nullable-типами.

→ Ссылка