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