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
Оператор ??
Попытка преобразовать обнуляемый объект в его базовый тип путем приведения типов обычно приводит к генерированию исключения System. InvalidOperationException, если обнуляемый объект содержит пустое значение. Это может произойти, например, в том случае, если значение обнуляемого объекта присваивается переменной его базового типа с помощью приведения типов. Появления данного исключения можно избежать, если воспользоваться оператором ? ?, называемым
Ниже приведена общая форма оператора ??.
Если
