full sharp / 18Перегрузка операторов
.pptxПерегрузка
операторов
Оператор — это член, который определяет значение применения конкретного оператора выражения к экземплярам класса.
Поддерживается определение операторов трех видов: унарные операторы, двоичные операторы и операторы преобразования.
Все операторы должны объявляться с использованием модификаторов public и static.
Перегрузка операторов позволяет переопределить операторы С# для применения их к типам, определенным пользователем.
“syntactic sugar”
К унарным операторам, допускающим перегрузку, относятся:
+ - ! ~ ++ -- true false
К бинарным операторам, допускающим перегрузку, относятся:
+ - * / % & | ^ << >> == != > < >= <=
невозможна перегрузка операторов доступа к членам, вызова методов или операторов =, &&, ||, ??, ?:,
=>, checked, unchecked, new,typeof, default, as и is.
public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b)
// перегрузка оператора +
Все методы, представляющие перегружаемые операторы, должны быть определены
как public и static.
Формально возвращаемое значение может быть любого типа. Однако общая практика — возвращать тип, для которого определяется метод (кроме операторов
true и false — они должны всегда возвращать булево значение).
Число передаваемых аргументов (объект!, объект!) зависит от типа перегружаемого оператора. Для унарных (т. е. с одним операндом) операторов должен указываться один аргумент. Для перегрузки оператора передаются два аргумента.
В случае унарных операторов аргумент этого метода должен быть того же типа, что и включенный в него класс или структура