表达式(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
| 复合赋值;支持的运算符有:*= /= %= += -= <<= >>= &= ^= |= |
|