Читаем C# 4.0 полное руководство - 2011 полностью

Обнуляемый объект может использоваться в тех выражениях, которые являются действительными для его базового типа. Более того, обнуляемые объекты могут сочетаться с необнуляемыми объектами в одном выражении. И это вполне допустимо благодаря предопределенному преобразованию базового типа в обнуляемый. Когда обнуляемые и необнуляемые типы сочетаются в одной операции, ее результатом становится значение обнуляемого типа.

В приведенной ниже программе демонстрируется применение обнуляемых типов в выражениях.

// Использовать обнуляемые объекты в выражениях.

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

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

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

Еслиобнуляемый_объектсодержит конкретное значение, то результатом операции ? ? будет именно это значение. В противном случае результатом операции ? ? окажетсязначение_по_умолчанию.

Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT