Как вам должно быть уже известно, в C# предусмотрены следующие логические операторы: &, |, !, && и ||. Из них перегрузке, безусловно, подлежат только операторы &, | и !. Тем не менее, соблюдая определенные правила, можно извлечь также пользу из укороченных логических операторов && и ||.
При таком способе перегрузки логических операторов &, | и ! методы каждого из них возвращают результат типа bool. Это необходимо для того, чтобы использовать рассматриваемые операторы обычным образом, т.е. в тех выражениях, где предполагается результат типа bool. Напомним, что для всех встроенных в C# типов данных результатом логической операции должно быть значение типа bool. Поэтому вполне разумно предусмотреть возврат значения типа bool и в перегружаемых вариантах этих логических операторов. Но, к сожалению, такой способ перегрузки пригоден лишь в том случае, если не требуются укороченные логические операторы.
Перегрузка укороченных логических операторов
Для того чтобы применение укороченных логических операторов && и || стало возможным, необходимо соблюсти следующие четыре правила:
- В классе должна быть произведена перегрузка логических операторов & и |.
- Перегружаемые методы операторов & и | должны возвращать значение того же типа, что и у класса, для которого эти операторы перегружаются.
- Каждый параметр должен содержать ссылку на объект того класса, для которого перегружается логический оператор.
- Для класса должны быть перегружены операторы true и false.
Если все эти условия выполняются, то укороченные логические операторы автоматически становятся пригодными для применения.