| 表达式(expression)由操作数(operand)和运算符(operator)构成。表达式的运算符标明在操作数上运用了哪种操作。运算符的例子包括+、-、*、/和new。操作数的例子包括字面值、字段、局部变量和表达式。 当表达式包括多个运算符时,运算符的优先级(precedence)控制各个运算符执行的顺序。例如,表达式x+y*z将以x+(y*z)的形式计算,原因就是运算符“*”的优先级高于运算符“+”。 大多数运算符能够被重载(overload)。运算符的重载允许用户自定义运算符实现,用于为用户自定义的类或者结构类型指定操作方式。 表1.4总结了C#的运算符,运算符的分类排列是按其优先级从高到低的次序。同一分类的运算符具有相同的优先级。   表1.4  C#的运算符 | 分类 | 表 达 式 | 描述 |  | 基本 
 | x.m | 成员访问 |  | x(…) | 方法和委托调用 |  | x[…] | 数组和索引器访问 |  | x++ | 后增量(post-increment
 |  | x-- | 后减量(post-decrement) |  | new T(…) | 对象和委托创建 |  | new T[…] | 数组创建 |  | typeof(T) | 获得T类型的System.Type对象 |  | checked(x) | 在检查的上下文计算表达式 |  | unchecked(x) | 在未检查的上下文计算表达式 |  | 一元 
 | +x | 表达式的值相同 |  | -x | 求相反数 |  | !x | 逻辑求反 |  | ~x | 按位求反 |  | ++x | 前增量(pre-increment) |  | --x | 前减量(pre-decrement) |  | (T)x | 显式地将x的类型转换为类型T |  | 乘除法 
 | x*y | 乘 |  | x/y | 除 |  | x%y | 求余 |  | 加减 
 | x+y | 加,字符串合并,委托组合 |  | x-y | 减,委托移除 |  | 移位 
 | x<<y | 左移 |  | x>>y | 右移 |  | 关系和类型检测 | x<y | 小于 |  | x>y | 大于 |  | x<=y | 小于或者等于 |  | x>=y | 大于或者等于 |  | x is T | 如果x属于T类型,返回true;否则,返回false |  | x as T | 返回转换为类型T的x;如果x不是T,就返回null |  | 相等 | x==y | 等于 |  | x!=y | 不等于 |  | 逻辑与 | x&y | 整型按位与,布尔型逻辑与 |  | 逻辑异或 | x^y | 整型按位异或,布尔型逻辑异或 |  | 逻辑或 | x|y | 整型按位或,布尔型逻辑或 |  | 条件与 | x&&y | 如果x为true,则计算y |  | 条件或 | x||y | 如果x为false,则计算y |  | 条件 | x?y:z | 如果x为true,则计算y;如果x为false,则计算z |  | 赋值 
 | x=y | 赋值 |  | x op=y 
 | 复合赋值;支持的运算符有:*=  /=  %=  +=  -=  <<=  >>=  &=  ^=  |=   | 
 
 
 
 
 |