нуль, то возникает ошибка при выполнении.
Укороченные логические операторы иногда оказываются более эффективными, чем их обычные аналоги. Так зачем же нужны обычные логические операторы И и ИЛИ? Дело в том, что в некоторых случаях требуется вычислять оба операнда логической операции И либо ИЛИ из-за возникающих побочных эффектов. Рассмотрим следующий пример программы.
// Продемонстрировать значение побочных эффектов.
using System;
class SideEffects { static void Main() { int i;
bool someCondition = false;
i = 0;
Console.WriteLine('Не выводится');
Console.WriteLine('Оператор if выполняется: ' + i); // выводится 1
// В данном случае значение переменной i не инкрементируется,
// поскольку инкремент в укороченном логическом операторе опускается, if(someCondition && ( + + i < 100))
Console.WriteLine('Не выводится');
Console.WriteLine('Оператор if выполняется: ' + i); // по-прежнему 1 !!
}
}
Прежде всего обратим внимание на то, что переменная someCondition типа bool инициализируется значением false. Далее проанализируем каждый оператор if. Как следует из комментариев к данной программе, в первом операторе i f переменная i инкрементируется, несмотря на то что значение переменной someCondition равно false. Когда применяется логический оператор &, как это имеет место в первом операторе i f, выражение в правой части этого оператора вычисляется независимо от значения выражения в его левой части. А во втором операторе i f применяется укороченный логический оператор. В этом случае значение переменной i не инкрементируется, поскольку левый операнд (переменная someCondition) имеет значение false, следовательно, выражение в правой части данного оператора пропускается. Из этого следует вывод: если в коде предполагается вычисление правого операнда логической операции И либо ИЛИ, то необходимо пользоваться неукороченными формами логических операций, доступных в С#.
И последнее замечание: укороченный оператор И называется также
Оператор присваивания
Здесь
У оператора присваивания имеется одна интересная особенность, о которой вам будет полезно знать: он позволяет создавать цепочку операций присваивания. Рассмотрим, например, следующий фрагмент кода.
int х, у, z;
х = у = z = 100; // присвоить значение 100 переменным х, у и z
В приведенном выше фрагменте кода одно и то же значение 100 задается для переменных х, у и z с помощью единственного оператора присваивания. Это значение присваивается сначала переменной z, затем переменной у и, наконец, переменной х. Такой способ присваивания 'по цепочке' удобен для задания общего значения целой группе переменных.
Составные операторы присваивания
В C# предусмотрены специальные составные операторы присваивания, упрощающие программирование некоторых операций присваивания. Обратимся сначала к простому примеру. Приведенный ниже оператор присваивания
X = X + 10;
можно переписать, используя следующий составной оператор присваивания.
X += 10;
Пара операторов += указывает компилятору на то, что переменной х должно быть присвоено