表1 显示了 C#运算符的优先级,其中顶部的运算符有最高的优先级(即在包含多个运算符的表达式中,最先计算该运算符)。.

x + y + z
就等于:
(x + y) + z
需要先注意运算符的优先级,再考虑其关联性。在以下表达式中,先计算 y 和 z 相乘,再把计算的结果分配给 x,因为乘法的优先级高于加法:
x + y * z
关联性的重要例外是赋值运算符,它们是右关联。下面的表达式从右向左计算:
x = y = z
因为存在右关联性,所有变量 x、y、z 的值都是 3,且该运算符是从右向左计算的。如果这个运算符是从左向右计算,就不会是这种情况:
int z = 3;
int y = 2;
int x = 1;
x = y = z;
一个重要的、可能误导的右关联运算符是条件运算符。表达式
a ? b: c ? d: e
等于:
a = b: (c ? d: e)
这是因为该运算符是右关联的。
注意
在复杂的表达式中,应避免利用运算符优先级来生成正确的结果。使用圆括号指定运算符的执行顺序,可以使代码更整洁,避免出现潜在的冲突。