Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1105 of 1492 menu
◀ ▶

Операторы истинности

Пара operator true и operator false описывает логическое состояние типа в if и циклах. Для && и || дополнительно нужны operator & или operator |, которые возвращают тот же тип, а не bool. Иначе составные условия не соберутся.

Синтаксис

public static bool operator true(Тип value) public static bool operator false(Тип value) public static Тип operator &(Тип left, Тип right) public static Тип operator |(Тип left, Тип right)

Пример

Давайте проверим объект в условии if:

using System; class Signal { public int Power; public static bool operator true(Signal signal) { return signal.Power > 0; } public static bool operator false(Signal signal) { return signal.Power <= 0; } public static Signal operator &(Signal left, Signal right) { int power = left.Power > 0 && right.Power > 0 ? 1 : 0; return new Signal { Power = power }; } public static Signal operator |(Signal left, Signal right) { int power = left.Power > 0 || right.Power > 0 ? 1 : 0; return new Signal { Power = power }; } } class Program { static void Main() { var signal = new Signal { Power = 5 }; if (signal) { Console.WriteLine("on"); } } }

Результат выполнения кода:

"on"

Пример

Давайте применим && с перегруженным operator &:

using System; class Signal { public int Power; public static bool operator true(Signal signal) { return signal.Power > 0; } public static bool operator false(Signal signal) { return signal.Power <= 0; } public static Signal operator &(Signal left, Signal right) { int power = left.Power > 0 && right.Power > 0 ? 1 : 0; return new Signal { Power = power }; } public static Signal operator |(Signal left, Signal right) { int power = left.Power > 0 || right.Power > 0 ? 1 : 0; return new Signal { Power = power }; } } class Program { static void Main() { var left = new Signal { Power = 5 }; var right = new Signal { Power = 0 }; Signal res = left && right; Console.WriteLine(res ? "on" : "off"); } }

Результат выполнения кода:

"off"

Пример

Давайте применим || с перегруженным operator |:

using System; class Signal { public int Power; public static bool operator true(Signal signal) { return signal.Power > 0; } public static bool operator false(Signal signal) { return signal.Power <= 0; } public static Signal operator &(Signal left, Signal right) { int power = left.Power > 0 && right.Power > 0 ? 1 : 0; return new Signal { Power = power }; } public static Signal operator |(Signal left, Signal right) { int power = left.Power > 0 || right.Power > 0 ? 1 : 0; return new Signal { Power = power }; } } class Program { static void Main() { var left = new Signal { Power = 0 }; var right = new Signal { Power = 3 }; Signal res = left || right; Console.WriteLine(res ? "on" : "off"); } }

Результат выполнения кода:

"on"

Смотрите также

  • оператор if,
    который использует operator true и false
  • операторы == и !=,
    которые задают сравнение значений
  • тип bool,
    который возвращают operator true и operator false
  • модификатор static,
    который нужен для перегрузки operator true
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить