История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Перегрузка бинарных операций
C# позволяет определить значение операции (арифметической, логической, …) относительно создаваемого класса. Этот процесс называется перегрузкой операторов. Перегрузка операторов расширяет функциональность класса. Например: можно перегрузить операцию «+» для класса Num_Array: это означает слияние массивов в общий, результирующий массив. Операция «+» для класса Point будет означать суммирование соответствующий координат двух точек. Операция «+» для класса Stack будет означать слияние стеков, то есть получение общего, результирующего стека.
Перегрузку оператора расценивают как введение новой операции для класса, если она имеет смысл. Тогда можно оперировать объектами (составлять выражения над объектами), используя обычный синтаксис выражений. Более того, в выражениях можно использовать объекты и другие типы данных (например: Point и int), но для этого нужно перегрузить ещё раз соответствующую операцию. Перегрузка операторов – одно из самых мощных средств языка C#. Перегрузка операторов тесно связана с перегрузкой методов, то есть они похожи.
Для перегрузки операторов используется ключевое слово operator, позволяющее создать операторный метод, который определяет действие оператора, связанное с его классом.
Существует две формы операторных методов: для бинарных операций и для унарных операций.
Общий формат перегрузки бинарного оператора:
public static Тип_возврата operator знак_операции(тип и имя операнда_1, тип и имя операнда_2)
{
//Операторы
}
Здесь знак_операции – это оператор “+”, “-”, “=”, “ = = ” и т.д.; операнд_1 – это левый операнд, а операнд2 – это правый операнд, например:
Ob3 = Ob1 – Ob2;
левый правый
Перегрузку оператора рассмотрим на примере класса Point:
//В классе Point:
public static Point operator + (Point Ob1, Point Ob2)
{
return new Point(Ob1.x + Ob2.x, Ob1.y + Ob2.y);
}
//В Main():
Point T1 = new Point(5, 23);
Point T2 = new Point(17, 8);
Point T3 = T1 + T2;
T3.Show();
//Выполнить!
Задание: Аналогично разработать операторный метод «-» (минус) для точек.
//В классе Point:
Public static Point operator - (Point Ob1, Point Ob2)
{
return new Point(Ob1.x - Ob2.x, Ob1.y - Ob2.y);
}
//Выполнить!
Примечание: Подавляющее большинство языков программирования (VB, Java) не поддерживают перегрузку операторов. Требования обеспечить перегрузку операторов нет и в CLS (Common Languages Specification). Если в один проект собрать модули, написанные на разных языках программирования (компонентно-ориентированное программирование), то перегрузка операторов может не работать. Выход: каждому перегруженному оператору создать аналогичный обычный метод.
//В классе Point:
Public static Point AddPoint(Point Ob1, Point Ob2)
{
return new Point(Ob1.x + Ob2.x, Ob1.y + Ob2.y);
}
Чтобы не дублировать программный код, ещё проще передавать вызовы от перегруженного оператора «+» обычному методу. Изменим операторный метод «+» в классе Point.
public static Point operator +(Point Ob1, Point Ob2)
{
return AddPoint(Ob1,Ob2);
}
//Выполнить!
Перегрузка унарных операций и операций отношений
Унарная операция означает, что в ней участвует один операнд. Примеры унарных операций: изменение значения числовой переменной на противоположную (-); инкрементирование (++) и декрементирование (--) и др.
Формат записи унарного оператора:
public static Тип_возврата operator знак_операции (тип и имя операнда)
{
// Операторы
}
|
|
|
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!