Поиск

Перегрузка операторов и нестандартные преобразования

Из главы 7 вы узнали о применении оператора [] для индексации объектов, как если бы они были массивами. В этой главе мы рассмотрим две тесно связанные функции С# для создания интерфейсов структур и классов, упрощающих их понимание и применение: перегрузку операторов (operator overloading) и нестандартные, определенные пользователем преобразования. Я начну с общего обзора перегрузки операторов, чтобы были ясны ее преимущества, затем рассмотрю конкретный синтаксис переопределения поведения операторов по умолчанию, а также реальный пример приложения, в котором оператор + перегружается для объединения нескольких объектов Invoice. Потом вы увидите листинг с перегружаемыми бинарными и унарными операторами и применением некоторых ограничений. Обсуждение перегрузки операторов завершится рекомендациями по принятию решения о перегрузке операторов в ваших классах. Закончив с перегрузкой операторов, вы изучите новую концепцию — нестандартные преобразования. Я опять же начну с основ этой возможности, а затем углублюсь в описание класса, показав, как применять преобразования для структур и классов к другим структурам и классам или базисным типам С#.