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