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

Если оператор преобразования указан в неявной форме(implicit),то преобразование вызывается автоматически, например, в том случае, когда объект используется в выражении вместе со значением целевого типа. Если же оператор преобразования указан в явной форме(explicit),то преобразование вызывается в том случае, когда выполняется приведение типов. Для одних и тех же исходных и целевых типов данных нельзя указывать оператор преобразования одновременно в явной и неявной форме.

Создадим оператор преобразования специально для классаThreeD,чтобы продемонстрировать его применение. Допустим, что требуется преобразовать объект типаThreeDв целое значение, чтобы затем использовать его в целочисленном выражении. Такое преобразование требуется, в частности, для получения произведения всех трех координат объекта. С этой целью мы воспользуемся следующей неявной формой оператора преобразования.

public static implicit operator int(ThreeD opl)

{

return opl.x * opl.у * opl.z;

}

Ниже приведен пример программы, демонстрирующей применение этого оператора преобразования.

// Пример применения оператора неявного преобразования, using System;

// Класс для хранения трехмерных координат, class ThreeD {

int х, у, z; // трехмерные координаты

public ThreeD    {    х = у = z = 0;    }

public ThreeD(int i, int j, int k) { x = i; у = j; z = k; }

// Перегрузить бинарный оператор +.

public static ThreeD operator +(ThreeD opl, ThreeD op2)

{

ThreeD result = new ThreeD;

result.x    =    opl.x    +    op2.x;

result.у    =    opl.y    +    op2.y;

result.z    =    opl.z    +    op2.z;

return result;

}

// Неявное преобразование объекта типа ThreeD к типу int. public static implicit operator int(ThreeD opl)

{

return opl.x * opl.y * opl.z;

}

// Вывести координаты X, Y, Z. public void Show

{

Console.WriteLine(x + ", " + у + ",    "    +    z)    ;

}

}

class ThreeDDemo { static void Main {

ThreeD a = new ThreeD(1, 2, 3);

ThreeD b = new ThreeD(10, 10, 10);

ThreeD с = new ThreeD; int i;

Console.Write("Координаты точки a: ");

a.Show;

Console.WriteLine ;

Console.Write("Координаты точки b: ");

b.Show;

Console.WriteLine;

с = a + b; // сложить координаты точек а и b Console.Write("Результат сложения a + b: ");

c.Show    ;

Console.WriteLine; i = a; // преобразовать в тип int

Console.WriteLine("Результат присваивания i = a: " + i) ; Console.WriteLine;

i=a*2-b; // преобразовать в тип int

Console.WriteLine("Результат вычисления выражения a * 2 -

}

}

Вот к какому результату приводит выполнение этой программы.

Координаты точки а:1, 2,3

Координаты точки Ь: 10, 10, 10

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

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

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