Тип bool
(он же System.Boolean
) — логическое значение, которому может быть присвоен литерал true
или false
. Тип bool
требует всего один бит для хранения значения в памяти, однако фактически он занимает один байт — минимальный размер, с которым может работать процессор. Чтобы избежать неэффективного использования памяти в случае с массивами, в фреймворке есть класс BitArray
(в пространстве имен System.Collections
), который использует один бит для логических значений.
Операторы отношений (Equality and Comparison Operators)
Операторы равенства ==
и неравенства !=
проверяют два значения на равенство или неравенство и всегда возвращают логическое (bool
) значение. Для ссылочных типов равенство, по умолчанию, подразумевает равенство ссылок, а не самих объектов, на которые эти ссылки указывают. Поэтому два экземпляра объекта с одинаковыми данными фактически равны не будут, если только оператор ==
специально не перегружен (overloaded, об этом ниже) для достижения такого эффекта.
Операторы отношений, к которым относятся ==
, !=
, <
, >
, >=
, и <=
, могут использоваться со всеми числовыми типами (с реальными числами нужно использовать с осторожностью в силу их неточности при десятичной записи, о чем говорилось выше), а так же с типом enum
.
Условные или логические операторы (Conditional Operators)
Операторы &&
и ||
выполняют логические операции И и ИЛИ. Они часто используются с оператором !
, который выражает отрицание — НЕ. Операторы && и || являются сокращенными, что означает что каждое последующее выражение будет высчитываться только если в этом есть необходимость. Эта особенность в некоторых случаях очень полезна, т.к. позволяет выполнять выражения без выбрасывания NullReferenceException
:
1 | if (sb != null && sb.Length > 0) ... |
Операторы &
и |
выполняют те же логические операции И и ИЛИ, но они не являются сокращенными, в силу чего используются редко.
Тернарный логический (условный) оператор (часто называемый просто условным оператором) имеет форму q ? a : b. Если условие q верно (true) будет выполнено выражение a, в противном случае — выражение b.
С логическими типами также может использоваться бинарный оператор ^
, который выполняет роль исключающего ИЛИ. Этот оператор вернет true
если только одни его операнд имеет значение true
.