// Продемонстрировать применение обнуляемого типа.
using System;
class NullableDemo { static void Main() { int? count = null;
if (count.HasValue)
Console.WriteLine("Переменная count имеет следующее значение: " + count.Value);
else
Console.WriteLine("У переменной count отсутствует значение");
count = 100; if(count.HasValue)
Console.WriteLine("Переменная count имеет следующее значение: " + count. Va^lue) ;
else
Console.WriteLine("У переменной count отсутствует значение");
}
}
Вот к какому результату приводит выполнение этой программы.
У переменной count отсутствует значение Переменная count имеет следующее значение: 100
Применение обнуляемых объектов в выражениях
Обнуляемый объект может использоваться в тех выражениях, которые являются действительными для его базового типа. Более того, обнуляемые объекты могут сочетаться с необнуляемыми объектами в одном выражении. И это вполне допустимо благодаря предопределенному преобразованию базового типа в обнуляемый. Когда обнуляемые и необнуляемые типы сочетаются в одной операции, ее результатом становится значение обнуляемого типа.
В приведенной ниже программе демонстрируется применение обнуляемых типов в выражениях.
// Использовать обнуляемые объекты в выражениях.
using System;
class NullableDemo { static void Main() {
int? count = null; int? result = null;
int incr = 10; // переменная incr не является обнуляемой
// переменная result содержит пустое значение,
// переменная оказывается count пустой, result = count + incr; if(result.HasValue)
Console.WriteLine("Переменная result имеет следующее значение: " + result.Value);
else
Console.WriteLine("У переменной result отсутствует значение");
// Теперь переменная count получает свое‘значение, и поэтому
// переменная result будет содержать конкретное значение.
count = 100;
result = count + incr;
if(result.HasValue)
Console.WriteLine("Переменная result имеет следующее значение: " + result.Value);
else
Console.WriteLine("У переменной result отсутствует значение");
}
}
При выполнении этой программы получается следующий результат.
У переменной result отсутствует значение Переменная result имеет следующее значение: 110
Оператор ??