Операторы true и false (справочник по C#)
Оператор true возвращает значение true true , указывая, что его операнд имеет значение true. Оператор false возвращает значение bool true , указывая, что его операнд имеет значение false. Операторы true и false не обязательно дополняют друг друга. То есть оба оператора true и false могут вернуть значение bool false для одного операнда. Если тип определяет один из двух операторов, он должен также определять другой оператор.
Используйте тип bool? , если вам нужно использовать трехзначную логику (например, при работе с базами данных, которые поддерживают трехзначный логический тип). В C# предоставляются операторы & и | , которые поддерживают троичную логику с операндами bool? . См. подробнее о логических операторах, поддерживающих значение NULL в описании логических операторов.
Логические выражения
Тип с определенным оператором true может быть типом результата управляющего условного выражения в операторах true , do, while и for и условном операторе . Дополнительные сведения см. в описании логических выражений в спецификации языка C#.
Пользовательские условные логические операторы
Если тип с определенными операторами true и false true логические операторы false | или | & определенным образом, & || или || && соответственно могут вычисляться для операндов этого типа. Дополнительные сведения см. в разделе Пользовательские условные логические операторы в Спецификации языка C#.
Пример
В следующем примере представлен тип, который определяет операторы true и false . Этот тип также перегружает логический оператор И & таким образом, что оператор && может быть вычислен для операндов этого типа.
Урок 9. Перегрузка True и False в C#
На девятом уроке в учебнике по объектно-ориентированному программированию на языке C# мы продолжим обсуждение перегрузки операторов. В данной статье описана перегрузка операторов true и false, позволяющая использовать объект в условной обработке.
True и False как операторы
Ключевые слова true и false имеют много применений в C#. Одно из этих применений — это пара операторов внутри класса, которые позволяют классу представлять свое собственное состояние как истинное или ложное. Определение результата осуществляется в закодированных программистом правилах. Это эффективно дает неявное преобразование типа в логическое значение, которое затем может использоваться в сценариях условной обработки, таких как оператор if или условный оператор (?).
В этой статье используется класс Vector, разработанный в предыдущей статье.
Добавление операторов True и False
Поведение по умолчанию
Поведение по умолчанию любого класса заключается в отсутствии поддержки операторов true и false. Это означает, что если будет предпринята попытка оценить объект такого класса как Boolean, то код не будет скомпилирован. Это можно продемонстрировать, используя векторный объект в качестве условия в операторе if. Измените основной метод программы VectorDemo следующим образом и попытайтесь скомпилировать его, чтобы увидеть ошибку.
Перегрузка true и false
Синтаксис перегрузки операторов true и false аналогичен синтаксису других унарных операторов. Существуют два ограничения. Во-первых, возвращаемое значение должно быть логическим. Во-вторых, недопустимо перегружать только один из двух операторов; если истинный оператор перегружен, то он должен быть ложным и наоборот.
Добавление True и False в класс Vector
Класс Vector теперь можно обновить, включив в него перегруженные версии операторов true и false. В случае векторов объект будет считаться «истинным», если любое из свойств вектора X или Y не равно нулю. Если значения X и Y равны нулю, объект будет оцениваться как false. Это просто реализуется путем добавления следующего кода:
Тестирование кода
Теперь, когда эти два оператора были добавлены, вы должны быть в состоянии скомпилировать и выполнить основной метод, описанный выше. Поскольку координаты вектора X и Y не равны нулю, код выводит текст «True». Если вы измените объявление вектора следующим образом, код выведет false вместо этого.
Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
статьи IT, си шарп, ООП
Логические операторы C#
Логические операторы предназначены для выстраивания логики программы, например, определить какое действие должны выполнить программа в результате получение какого-либо значения выражения. В C# логические операторы, как и арифметические могут быть унарными и бинарными.
Логические операторы C#
- логическое отрицание ( ! )
- логическое И ( & ),
- логическое ИЛИ ( | ),
- логическое исключающее ИЛИ ( ^ ).
- условное логическое И ( && )
- условное логическое ИЛИ ( || )
- равенство ( == )
- неравенство ( != )
- меньше чем ( < ),
- больше чем ( > ),
- меньше или равно ( <= )
- больше или равно ( >= )
Условный оператор if
Для дальнейшего рассмотрения темы логических операторов в C# стоит затронуть вопрос о таком условном операторе, как if . В C# этот операторы выглядит следующим образом:
Здесь, в отличие от Delphi, можно увидеть, что: во-первых, в C# нет then перед первым условием и, во-вторых, после первого действия обязательно ставиться точка с запятой, чего в Delphi делать не надо. В остальном же, действие оператора точно такое же как и в Delphi и любых других языках программирования — если выполняется условие, то программы переходит на действие 1 , иначе — на действие 2 .
Теперь перейдем к логическим операторам в C#.
Унарный логический оператор ( ! )
Унарный префиксный оператор ! выполняет логическое отрицание операнда, то есть, возвращает true , если операнд имеет значение false , и, наоборот, false , если операнд имеет значение true .
вернет нам в консоль строку
Логическое И ( & )
Это оператор всегда обрабатывает оба операнда и возвращает True только в том случае, если оба оператора равны True . Например,
Логическое ИЛИ ( | )
Так же, как и предыдущий оператор, логическое ИЛИ обрабатывает оба операнда. В отличие от логического И этот оператор вернет True , если хотя бы один операнд будет иметь значение True .
Логическое исключающее ИЛИ ( ^ ).
Вычисляет оба операнда, но возвращает True только в том случае, если левый и правы операторы не равны, то есть результат применения этого оператора можно представить следующим образом:
| a | b | Результат ^ |
| True | True | False |
| False | False | False |
| True | False | True |
| False | True | True |
Ниже представлен код, демонстрирующий данные из таблицы:
Условное логическое И ( && )
В отличие от предыдущих бинарных логических операторов C# этот оператор обрабатывает правый операнд только тогда, когда это необходимо. Действие этого оператора следующее — он возвращает True только тогда, когда оба оператора равны True .
| a | b | Результат && |
| True | True | True (правый операнд обработан) |
| False | False | False (правый операнд не обработан) |
| True | False | False (правый операнд обработан) |
| False | True | False (правый операнд не обработан |
Код, демонстрирующий работу оператора представлен ниже
Вывод консоли будет следующим
Правый операнд обработан
Условное логическое ИЛИ ( || )
Также, как и предыдущий оператор, условное логическое ИЛИ обрабатывает правый оператор только когда необходимо. При этом результат выполнения условного логического ИЛИ будет True , если хотя бы один из операндов равен True .
| a | b | Результат || |
| True | True | True (правый не операнд обработан) |
| False | False | False (правый операнд обработан) |
| True | False | True (правый не операнд обработан) |
| False | True | True (правый операнд обработан |
Код, демонстрирующий поведение уловного логического ИЛИ представлен ниже:
Вывод консоли будет следующим:
Правый операнд обработан
Правый операнд обработан
Операторы равенства в C#
Равенство (==)
Равенство встроенных типов значений
Операнды встроенных типов значений равны, если равны их значения. Например,
Равенство перечислений
Применительно к перечислениям, оператор == вернет true , если если равны соответствующие значения базового целочисленного типа. Например,
Равенство строк
Два операнда string равны, если они оба имеют значение null или оба экземпляра строки имеют одинаковую длину и идентичные символы в каждой позиции символа.
Неравенство (!=)
Оператор вернет true , если операнды не равны между собой. Действие оператора аналогично оператору равенства.
Операторы сравнения
Эти операторы поддерживаются всеми целочисленными типами и типами с плавающей запятой.
Меньше чем (<)
Оператор < возвращает true , если его левый операнд строго меньше правого. В противном случае возвращается false .
Больше чем (>)
Оператор > возвращает true , если его левый операнд больше правого. В противном случае возвращается false .
Меньше или равно (<=)
Оператор <= возвращает true , если его левый операнд меньше или равен правому. В противном случае возвращается false .
Больше или равно (>=)
Оператор >= возвращает true , если его левый операнд больше или равен правому. В противном случае возвращается false .
Итого
Сегодня мы познакомились с логическими операторами в C#, а также рассмотрели некоторые особенности использования этих операторов. На данный момент мы знаем, что такое переменная, как объявлять и инициализировать переменные, какие типы данных есть в C#, а также какие арифметические и логические операторы мы можем применять в своих приложения на C#. Теперь можно приступать к более детальному рассмотрению типов данных в C#.