Перегрузка укороченных логических операторов - C#

Узнай цену своей работы

Формулировка задачи:

Еще один вопрос о перегрузке... Насколько я понял, напрямую перегружать || и && нельзя. Но, как пишет Шилдт, есть выход. Вот 4 необходимых условий для этого:
  1. В классе должна быть произведена перегрузка логических операторов & и |.
  2. Перегружаемые методы операторов & и | должны возвращать значение того же типа, что и у класса, для которого эти операторы перегружаются. (

    поясню: тут будут возвращены объекты, соответствующие True или False

    )
  3. Каждый параметр должен содержать ссылку на объект того класса, для которого перегружается логический оператор.
  4. Для класса должны быть перегружены операторы true и false.
Вопрос вызывает только 2й пункт. Не пойму логику. Почему эти методы не могут так же вернуть True или False? И, действительно, если попытаться скомпилировать подобное, то VS выдает следующую ошибку:

Ошибка 1 При использовании определенного пользователем логического оператора ("ThreeD.operator

&

(ThreeD, ThreeD)") как отладочного тип значения, возвращаемого этим оператором, должен совпадать с типом обоих его параметров.

ThreeD - название класса.

Решение задачи: «Перегрузка укороченных логических операторов»

textual
Листинг программы
   int a = 3;
 
            if (false & a++ != 4) ;
            Console.Write(a);//выдаст 4
 
            if (false && a++ != 4) ;
            Console.Write(a);//выдаст 4

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы