算术运算符的运算数都是数值型的,即下述a
和b
是表达式。
表达式 |
读法 |
元数 |
解释
|
a + b |
a plus b |
binary |
加法
|
a - b |
a minus b |
binary |
减法
|
a*b |
a times b |
binary |
乘法
|
a/b |
a divided by b |
binary |
除法。如果2个操作数都是整数,商也是整数。
|
a%b |
a mod b |
binary |
要求操作数都是整数,返回余数。
|
a++ |
a plus plus or Postincrement a |
unary |
操作数必须是左值,返回加一之前的值。
|
++a |
plus plus a or Preincrement a |
unary |
操作数必须是左值,返回加一之后的值。
|
a-- |
a minus minus or Postdecrement a |
unary |
操作数必须是左值,返回减一之前的值。
|
--a |
minus minus a or Predecrement a |
unary |
操作数必须是左值,返回减一之后的值。
|
逻辑运算符的运算数是布尔值或整数值。
表达式 |
读法 |
元数 |
解释
|
a&b |
a bitwise and b |
binary |
对两个操作数均求值,如果是整型则按位与,如果是布尔型则逻辑与。
|
a&&b |
a and b |
binary |
只用于布尔值表达式。短路求值做逻辑与。
|
a | b |
a bitwise or b |
binary |
对两个操作数均求值,如果是整型则按位或,如果是布尔型则逻辑或。
|
a || b |
a or b |
binary |
只用于布尔值表达式。短路求值做逻辑或。
|
a ^ b |
a x-or b |
binary |
如果是整型则按位异或,如果是布尔型则逻辑异或。
|
!a |
not a |
unary |
只用于布尔值表达式。逻辑非
|
~a |
bitwise not a |
unary |
只用于整型值表达式。按位非
|
表达式 |
读法 |
元数 |
解释
|
a << b |
a left shift b |
binary |
左移位
|
a >> b |
a right shift b |
binary |
右移位
|
表达式 |
读法 |
元数 |
解释
|
a == b |
a is equal to b |
binary |
对于值类型或字符串类型,比较值是否相等。对于引用类型,比较是否为同一对象。
|
a != b |
a is not equal to b |
binary |
返回运算符== 的逻辑非。
|
a < b |
a is less than b |
binary |
只用于数值表达式。小于。
|
a > b |
a is greater than b |
binary |
只用于数值表达式。大于。
|
a <= b |
a is less than or equal to b |
binary |
只用于数值表达式。小于等于。
|
a >= b |
a is greater than or equal to b |
binary |
只用于数值表达式。大于等于。
|
表达式 |
读法 |
元数 |
解释
|
a = b |
a equals (or set to) b |
binary |
对于值类型,修改左值的基本值;对于引用类型,左值指向新的引用对象。
|
a = b = c |
b set to c , and then a set to b |
n-ary |
连续赋值。等价于a = (b = c)
|
表达式 |
读法 |
元数 |
解释
|
a += b |
a plus equals (or increment by) b |
binary |
等价于a = a + b .
|
a -= b |
a minus equals (or decrement by) b |
binary |
等价于a = a - b .
|
a *= b |
a multiply equals (or multiplied by) b |
binary |
等价于a = a*b .
|
a /= b |
a divide equals (or divided by) b |
binary |
等价于a = a/b .
|
a %= b |
a mod equals b |
binary |
等价于a = a%b .
|
a &= b |
a and equals b |
binary |
等价于a = a&b .
|
a |= b |
a or equals b |
binary |
等价于a = a|b .
|
a ^= b |
a xor equals b |
binary |
等价于a = a^b .
|
a <<= b |
a left-shift equals b |
binary |
等价于a = a << b .
|
a >>= b |
a right-shift equals b |
binary |
E等价于a = a >> b .
|
表达式 |
读法 |
元数 |
解释
|
x is T |
is x of type T |
binary |
is运算符会忽略在要检查的实例的类上定义的任何运算符重载。当使用==运算符时,该运算符可能会被重载。
|
x as T |
cast x to T |
binary |
等价于x is T ? (T)x : null
|
sizeof(x) |
size of x |
unary |
只能用于值类型
|
typeof(T) |
type of T |
unary |
返回System.Type 对象。操作数必须是类型。对象应该用GetType 方法
|
表达式 |
读法 |
元数 |
解释
|
*a |
object at a |
unary |
间址运算符
|
a->member |
member member of a |
binary |
类似于. 运算符。
|
a[b] |
object at offset b from a |
binary |
索引一个指针
|
&a |
reference to a |
unary |
取地址
|
stackalloc a |
allocate a on the stack |
binary |
栈内存分配
|
fixed a |
prevent a from being relocated |
binary |
|
表达式 |
读法 |
元数 |
解释
|
checked(a) |
evaluate a and check for overflow |
unary |
对值a 溢出检查
|
unchecked(a) |
evaluate a without checking for overflow |
unary |
对值a 避免溢出检查
|
表达式 |
读法 |
元数 |
解释
|
a.b |
member b of a |
binary |
访问类型或命名空间a 的成员b 。如b 是字段,则调用该字段的get 函数
|
a[b] |
item b in a |
binary |
返回a 的索引b 的项目的值。数组是基于0索引
|
a[^b] |
item b from the end in a |
binary |
返回a 从尾部计数的索引b 的项目的值。C# 8.0的特性。^e是System.Index类型。
|
a[b..c] |
|
binary |
返回a 的索引在[b ,c )的项目值列表。C# 8.0的特性。表达式a..b是System.Range类型
|
(a)b |
cast b to type a |
binary |
把b 的值显式转换为类型a 。b 的类型必须有类型转换函数直接到a 或者到另一个类型并有转换函数到a .
|
new a |
create a new a |
n-ary |
创建一个a 类型的对象并调用缺省构造函数。a 类型的构造函数也可以带实参:new a(type1 arg1, type2 arg2, ...)
|
a + b |
concatenate string b to the end of string a |
binary |
如果a 和b 是字符串,则连接它们。如果任何一个操作数是null , 则被空字符串("" )替代。如果一个操作数是字符串另一个是非字符串的object, 则连接前调用ToString()
|
a + b |
concatenate delegate b to delegate a |
binary |
如果a 和b 是委托,执行委托的连接。
|
a ? b : c |
if a then b else c |
ternary |
如果a 是真,则对b 求值并返回其值,否则对c 求值并返回其值。任何情况b 和c 只有一个求值.
|
a ?? b |
if a is null then b else a |
binary |
如果a 是null , 对b 求值并返回其值,否则对a 求值并返回其值。如果a 非null , b 不会被求值.
|
a?.b |
if a is not null then evaluate b |
binary |
在试图引用对象的成员之前,先判断对象是否为null 。可连续使用null判断,如:a?.b()??c 或a?.b()?[c]
|
a?[b] |
if a is not null then get b |
binary |
在试图引用数组的元素之前,先判断对象是否为null 。可连续使用null判断,如:a?[b]??c )或a?.b()?[c]
|
@"a" |
verbatim "a" |
nullary |
字符串忽略转义字符序列。
|
$"{b}" |
insert b into the string literal |
n-ary |
$ 开始一个字符串插值语句。包含在{} 的符号名字将被求出其字符串值,必要时调用ToString()
|
$@"{b}" |
insert b into the verbatim string literal |
n-ary |
组合@ 和$ . 使用单层花括号{ and } 。从C# 8开始,运算符可以是任意序。
|