运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C# 有丰富的内置运算符,分类如下:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符
算术运算符
+ | - | * | / | % | ++ | -- |
---|---|---|---|---|---|---|
加 | 减 | 乘 | 除 | 模 | 加一 | 减一 |
关系运算符
== | != | > | < | >= | <= |
---|---|---|---|---|---|
等于 | 不等 | 大于 | 小于 | 大于等于 | 小于等于 |
逻辑运算符
&& | || | ! |
---|---|---|
位与 | 位或 | 位非 |
位运算符
& | | | ^ | ~ | << | >> |
---|---|---|---|---|---|
与 | 或 | 异或 | 取反 | 左移 | 右移 |
赋值运算符
= | += | -= | *= | /= | %= | <<= | >>= | &= | ^= | |= |
---|---|---|---|---|---|---|---|---|---|---|
简单赋值 | 加且赋值 | 减且赋值 | 乘且赋值 | 除且赋值 | 模且赋值 | 左移且赋值 | 右移且赋值 | 位与且赋值 | 位异或且赋值 | 位或赋值 |
其他运算符
运算符 | 描述 | 实例 |
---|---|---|
sizeof() | 返回数据类型的大小。 | sizeof(int) |
typeof() | 返回 class 的类型。 | typeof(StreamReader); |
& | 返回变量的地址。 | &a; 将得到变量的实际地址。 |
* | 变量的指针。 | *a; 将指向一个变量。 |
? : | 条件表达式 | 如果条件为真 ? 则为 X : 否则为 Y |
is | 判断对象是否为某一类型。 | If( Ford is Car) // 检查 Ford 是否是 Car 类的一个对象。 |
as | 强制转换,即使转换失败也不会抛出异常。 | Object obj = new StringReader("Hello"); StringReader r = obj as StringReader; |
运算符优先级
类别 | 运算符 | 结合性 |
---|---|---|
后缀 | () [] -> . ++ - - | 从左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 从右到左 |
乘除 | * / % | 从左到右 |
加减 | + - | 从左到右 |
移位 | << >> | 从左到右 |
关系 | < <= > >= | 从左到右 |
相等 | == != | 从左到右 |
位与 AND | & | 从左到右 |
位异或 XOR | ^ | 从左到右 |
位或 OR | | | 从左到右 |
逻辑与 AND | && | 从左到右 |
逻辑或 OR | || | 从左到右 |
条件 | ?: | 从右到左 |
赋值 | = += -= *= /= %=>>= <<= &= ^= |= | 从右到左 |
逗号 | , | 从左到右 |