Приоритет и порядок выполнения операций
Большинство операций в языке C#, их приоритет и порядок наследованы из языка C++. Однако имеются и различия: например, нет операции " , ", позволяющей вычислять список выражений; добавлены уже упоминавшиеся операции checked и unchecked, применимые к выражениям.
Как это обычно делается, приведем таблицу приоритетов операций, в каждой строке которой собраны операции одного приоритета, а строки следуют в порядке приоритетов, от высшего к низшему.
0 | Первичные | (expr) x.y f(x) a[x] x++ x-- new sizeof(t) typeof(t) checked(expr) unchecked(expr) | Слева направо |
1 | Унарные | + - ! ~ ++x --x (T)x | Слева направо |
2 | Мультипликативные (Умножение) | * / % | Слева направо |
3 | Аддитивные (Сложение) | + - | Слева направо |
4 | Сдвиг | << >> | Слева направо |
5 | Отношения, проверка типов | < > <= >= is as | Слева направо |
6 | Эквивалентность | == != | Слева направо |
7 | Логическое И | & | Слева направо |
8 | Логическое исключающее ИЛИ (XOR) | ^ | Слева направо |
9 | Логическое ИЛИ (OR) | | | Слева направо |
10 | Условное И | && | Слева направо |
11 | Условное ИЛИ | || | Слева направо |
12 | Условное выражение | ? : | Справа налево |
13 | Присваивание | = *= /= %= += -= <<= >>= &= ^= |= | Справа налево |