Для чего может понадобится обнуление значимого типа?
int? Value = null;
null же для ссылочных типов, и ссылочные типы по умолчанию равны null, значимые равны 0; Тогда в каком случае может понадобится присвоение значимому типу null?
Ответы (2 шт):
Например для совместимости с некоторыми структурами данных в JSON при сериализации/десериализации.
Представьте, что сервер может прислать такой JSON ответ
{
"value": 0
}
А может такой
{
"value": null
}
Или вообще такой
{
}
Как отличить, 0
пришёл или ничего? Без использования nullable типа никак. Точнее это было бы сильно сложнее.
public class Model
{
public int? Value { get; set; }
}
А так, зависит от потребностей. Это всего-лишь ещё группа типов в копилку к существующим.
В жизни часто бывают случаи, когда данных нет или они недостоверные. В таких случаях можно использовать null.
Если в такой ситуации использовать 0, то это уже совершенно определённое количество.
Для работы с такими данными предусмотрен тип "Nullable<T>":
int? Value = null;
if (Value.HasValue) ...
Широкое применение такие типы находят при работе с базами данных, в которых есть возможность объявлять любое поле nullable. Такие поля как раз и описываются nullable-типами.