C# 包含一元运算符、二元运算符和一个三元运算符。下表概述了这些运算符,并将它们按优先级以从高到低的顺序列出:
章节 | 类别 | 运算符 |
---|---|---|
第 7.5 节 | 基本 | x.y f(x) a[x] x++ x-- newtypeof checked unchecked |
第 7.6 节 | 一元 | + - ! ~ ++x --x (T)x |
第 7.7 节 | 乘法 | * / % |
第 7.7 节 | 加法 | + - |
第 7.8 节 | 移位 | << >> |
第 7.9 节 | 关系和类型检测 | < > <= >= is as |
第 7.9 节 | 相等 | == != |
第 7.10 节 | 逻辑 AND | & |
第 7.10 节 | 逻辑 XOR | ^ |
第 7.10 节 | 逻辑 OR | | |
第 7.11 节 | 条件 AND | && |
第 7.11 节 | 条件 OR | || |
第 7.12 节 | 条件 | ?: |
第 7.13 节 | 赋值 | = *= /= %= += -= <<= >>= &= ^= |= |
当表达式包含多个运算符时,运算符的优先级控制各运算符的计算顺序。例如,表达式 x + y * z
按 x + (y * z)
计算,因为 *
运算符具有的优先级比 +
运算符高。
当操作数出现在具有相同优先级的两个运算符之间时,运算符的顺序关联性控制运算的执行顺序:
x + y + z
按 (x + y) + z
计算。?:
) 向右顺序关联,意思是从右向左执行运算。例如,x = y = z
按 x = (y = z)
计算。优先级和顺序关联性都可以用括号控制。例如,x + y * z
先将 y
乘以 z
然后将结果与 x
相加,而 (x + y) * z
先将 x
与 y
相加,然后再将结果乘以 z
。