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

Ниже приведена общая форма оператора ??.

обнуляемый_объект ?? значение_по_умолчанию

Если обнуляемый_объект содержит конкретное

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату