ВУЗ:
Составители:
Рубрика:
18
5. Что необходимо учитывать при проектировании параметризованных
классов?
ЛАБОРАТОРНАЯ РАБОТА №5.
ПЕРЕОПРЕДЕЛЕНИЕ ОПЕРАЦИЙ
Цель лабораторной работы: научиться переопределять операции для
классов. В частности разобраться с определением критериев истинности для
объектов классов и перегрузкой логических операций.
Теоретические основы
Перегрузка операций в C# позволяет определять смысл стандартных
операций C# (+, - и т. д.) для классов
, определяемых пользователем. Например,
что значит, сложить два объекта класса А. Перегрузка операций строится на
основе открытых статических функций-членов, объявленных с использованием
ключевого слова operator.
Не все операции могут быть перегружены. Существуют определенные
правила и ограничения на перегрузку операций:
+, –, !, ~, ++, ––, true,
false
Унарные символы операций, допускающие перегрузку.
true и false также являются операциями
+, –, *, /, %, &, |, ^,
<<, >>
Бинарные символы операций, допускающие перегрузку
==, !=, <, >, <=, >= Операции сравнения перегружаются
&&, || Условные логические операции моделируются с
использованием ранее переопределенных операций & и |
[] Операции доступа к элементам массивов моделируются за
счет индексаторов
+=, –=, *=, /=, %=,
&=, =, ^=, <<=, >>=
Операции не перегружаются по причине невозможности
перегрузки операции присвоения
=, ., ?:, –>, new, is,
sizeof, typeof
Операции, не подлежащие перегрузке
Правила:
1. Префиксные операции ++ и –– перегружаются парами;
2. Операции сравнения перегружаются парами: если перегружается
операция ==, также должна перегружаться операция !=, < и >, <= и >=.
3. Операции true и false также перегружаются парами. В этом случае для
объекта класса определяются критерии истинности. Необходимо следить,
чтобы критерии истинности, определенные в операции true и в операции
false, не противоречили друг
другу.
Синтаксис:
public static <тип возвращаемого значения> operator <операция>(<параметры>)
Пример