Speak.Me Учить иностранные слова

C#: логические (Boolean) типы и операторы

Тип bool (он же System.Boolean) — логическое значение, которому может быть присвоен литерал true или false. Тип bool требует всего один бит для хранения значения в памяти, однако фактически он занимает один байт — минимальный размер, с которым может работать процессор. Чтобы избежать неэффективного использования памяти в случае с массивами, в фреймворке есть класс BitArray (в пространстве имен System.Collections), который использует один бит для логических значений.

Операторы отношений (Equality and Comparison Operators)

Операторы равенства == и неравенства != проверяют два значения на равенство или неравенство и всегда возвращают логическое (bool) значение. Для ссылочных типов равенство, по умолчанию, подразумевает равенство ссылок, а не самих объектов, на которые эти ссылки указывают. Поэтому два экземпляра объекта с одинаковыми данными фактически равны не будут, если только оператор == специально не перегружен (overloaded, об этом ниже) для достижения такого эффекта.

Операторы отношений, к которым относятся ==, !=, <, >, >=, и <=, могут использоваться со всеми числовыми типами (с реальными числами нужно использовать с осторожностью в силу их неточности при десятичной записи, о чем говорилось выше), а так же с типом enum.

Условные или логические операторы (Conditional Operators)

Операторы && и || выполняют логические операции И и ИЛИ. Они часто используются с оператором !, который выражает отрицание — НЕ. Операторы && и || являются сокращенными, что означает что каждое последующее выражение будет высчитываться только если в этом есть необходимость. Эта особенность в некоторых случаях очень полезна, т.к. позволяет выполнять выражения без выбрасывания NullReferenceException:

Операторы & и | выполняют те же логические операции И и ИЛИ, но они не являются сокращенными, в силу чего используются редко.

Тернарный логический (условный) оператор (часто называемый просто условным оператором) имеет форму q ? a : b. Если условие q верно (true) будет выполнено выражение a, в противном случае — выражение b.

С логическими типами также может использоваться бинарный оператор ^, который выполняет роль исключающего ИЛИ. Этот оператор вернет true если только одни его операнд имеет значение true.