Главное преимущество перегрузки операторов заключается в том, что она позволяет плавно интегрировать класс нового типа в среду программирования. Подобного ро^а расширяемость типов является важной составляющей эффективности такого объектно-ориентированного языка программирования, как С#. Как только для класса определяются операторы, появляется возможность оперировать объектами этого класса, используя обычный синтаксис выражений в С#. Перегрузка операторов является одной из самых сильных сторон языка С#.
Основы перегрузки операторов
Перегрузка операторов тесно связана с перегрузкой методов. Для перегрузки оператора служит ключевое слово
operator,определяющееСуществуют две формы операторных методов
(operator):одна — для унарных операторов, другая — для бинарных. Ниже приведена общая форма для каждой разновидности этих методов.// Общая форма перегрузки унарного оператора.
public static
{
// операции
}
// Общая форма перегрузки бинарного оператора.
public static
}
Здесь вместо
Тип операнда унарных операторов должен быть таким же, как и у класса, для которого перегружается оператор. А в бинарных операторах хотя бы один из операндов должен быть такого же типа, как и у его класса. Следовательно, в C# не допускается перегрузка любых операторов для объектов, которые еще не были созданы. Например, назначение оператора + нельзя переопределить для элементов типа
intилиstring.И еще одно замечание: в параметрах оператора нельзя использовать модификатор
refилиout.Перегрузка бинарных операторов