Перегрузка операторов позволяет переопределить операторы С# для применения их к типам, определенным пользователем. Перегрузку oпeраторов назвали "синтаксическим сахаром" ("syntactic sugar"'), имея в виду, что это лишь другой способ вызова метода. Это также должно говорить о том, что эта возможность ничего фундаментального в язык не привносит. Хотя с формальной точки зрения это и так, перегрузка операторов связана с одним из важнейших аспектов ООП — абстракцией. Допустим, вы хотите просуммировать счета для конкретного заказчика. Применив перегрузку операторов, вы можете написать код, в котором оператор += перегружен:
Invoice summarylnvoice = new InvoiceO;
foreach (Invoice invoice in customer.GetlnvoicesQ)
{
summarylnvoice += invoice; >
Достоинства такого кода в том, что здесь используется очень естественный синтаксис и что пользователю не нужно понимать детали реализации объединения счетов. Словом, перегрузка операторов помогает создавать менее дорогие для написания и сопровождения программы.