не забываем про логические операторы & и |, способ работы которых тоже чуток отличается от их "двойных собратьев"
пример:
Кликните здесь для просмотра всего текста
C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| int[] arr=new int[10];
bool flag = false;
Console.WriteLine("проверка оператора &&, нажмите любую клавишу");
Console.ReadKey();
try
{
if (flag && arr[15] == 1) ; //обращение к не существующему индексу, результат условия не интересует
Console.WriteLine(" ..выполненно без ошибок");//выводится эта строка
}
catch { Console.WriteLine(" ..ошибока при проверке"); }//сюда не попадаем
Console.WriteLine();
Console.WriteLine("проверка оператора &, нажмите любую клавишу");
Console.ReadKey();
try
{
if (flag & arr[15] == 1) ; //обращение к не существующему индексу, результат условия не интересует
Console.WriteLine(" ..выполненно без ошибок");//сюда не попадаем
}
catch { Console.WriteLine(" ..ошибока при проверке"); }//выводится эта строка
Console.Read(); |
|
пояснение:
одиночные операторы (& и |) проверяют И левую, И правую часть условия, и уже потом возвращает значение логической операции.
двойные операторы (&& и ||) проверяют сначала левую часть условия, и если результата проверки достаточно для того чтоб вернуть результат, на правую даже не смотрят, ведь действительно если находится логическое И, то зачем проверять правую часть условия, если левая - false?