Как в C# можно преобразовать nullable тип в обычный?


#1

Как можно преобразовать nullable тип в обычный? Например если есть переменная типа int?, то как можно преобразовать её к обычному int?


#2

Здравствуйте!

int? - это аналог Nullable<int>. Если вы посмотрите документацию, то станет ясно, что данная структура имеет два открытых свойства: HasValue и Value, так что для преобразования значения можно сделать следующее:

int? a= ...; // записать какое-то значение или же null
int b;
if (a.HasValue)  // свойство HasValue вернёт true, если в переменной a записано число, а не null
{
  b = a.Value;
}
else    // в а записано null
{
  b = ...;    // записать какое-то значение, например 0
}

Так же это можно сделать с помощью тернарного оператора:

int? a = ...; // записать какое-то значение или же null
int b = a.HasValue ? a.Value : 0;

Либо же в ещё более сокращённой форме:

int? a = ...; // записать какое-то значение или же null
int b = a ?? 0;    // b = (a == null) ? 0 : a;