C# 运算符
C# 中的运算符是一些特殊的符号,它们对操作数执行某些操作。在数学中,加号 (+) 对左右两个数字进行求和。同样,C# 包含各种运算符用于不同类型的操作。
以下示例演示了 C# 中的 + 运算符。
示例:+ 运算符
int x = 5 + 5;
int y = 10 + x;
int z = x + y;
在上面的示例中,+ 运算符将两个数字字面量相加并将结果赋给一个变量。它还相加两个 int 变量的值并将结果赋给一个变量。
一些运算符根据操作数的类型表现不同。例如,+ 运算符连接两个字符串。
示例:带字符串的 + 运算符
string greet1 = "Hello " + "World!";
string greet2 = greeting + name;
注意
C# 中有两种类型的运算符:一元运算符和二元运算符。一元运算符作用于单个操作数,而二元运算符作用于两个操作数(运算符的左侧操作数和右侧操作数)。
C# 包含以下类别的运算符
- 算术运算符
- 赋值运算符
- 比较运算符
- 相等运算符
- 布尔逻辑运算符
- 位和移位运算符
- 成员访问运算符
- 类型转换运算符
- 指针相关运算符
算术运算符
算术运算符对所有数字类型操作数执行算术运算,例如 sbyte、byte、short、ushort、int、uint、long、ulong、float、double 和 decimal。
运算符 | 名称 | 描述 | 示例 | |
---|---|---|---|---|
+ | 加法 | 计算左操作数和右操作数的和。 | int x = 5 + 5; | @ttHelpers.TryItLink("cid=cs-AQ5t4m") |
- | 减法 | 从左操作数中减去右操作数 | int x = 5 - 1; | @ttHelpers.TryItLink("cid=cs-Tz6rEA") |
* | 乘法 | 乘以左操作数和右操作数 | int x = 5 * 1; | @ttHelpers.TryItLink("cid=cs-2xKw5p") |
/ | 除法 | 将左操作数除以右操作数 | int x = 10 / 2; | @ttHelpers.TryItLink("cid=cs-278Kl1") |
% | 余数 | 计算左操作数除以右操作数后的余数 | int x = 5 % 2; | @ttHelpers.TryItLink("cid=cs-HzWx8H") |
++ | 一元递增 | 一元递增 ++ 运算符将其操作数增加 1 | x++ | @ttHelpers.TryItLink("cid=cs-2GrYMx") |
-- | 一元递减 | 一元递减 -- 运算符将其操作数减少 1 | x-- | @ttHelpers.TryItLink("cid=cs-sGd0gG") |
+ | 一元正号 | 返回操作数的值 | +5 | @ttHelpers.TryItLink("cid=cs-ljO0lc") |
- | 一元负号 | 计算其操作数的数值否定。 | -5 | @ttHelpers.TryItLink("cid=cs-ljO0lc") |
赋值运算符
赋值运算符 = 将其右侧值赋给其左侧变量、属性或索引器。它也可以与其他算术、布尔逻辑和位运算符一起使用。
运算符 | 名称 | 描述 | 示例 | |
---|---|---|---|---|
= | 赋值 | 将其右侧值赋给其左侧变量、属性或索引器。 | x = 10; | @ttHelpers.TryItLink("cid=cs-OnvjFQ") |
x op= y | 复合赋值 | x = x op y 的缩写形式,其中 op = 任何算术、布尔逻辑和位运算符。 | x += 5; | @ttHelpers.TryItLink("cid=cs-ZYXCLS") |
??= | 空合并赋值 | C# 8 及更高版本,??= 仅当左操作数为 null 时才赋值右操作数的值 | x ??= 5; | @ttHelpers.TryItLink("cid=cs-fbJUvB") |
比较运算符
比较运算符比较两个数字操作数并返回 true 或 false。
运算符 | 描述 | 示例 |
---|---|---|
< | 如果左操作数小于右操作数,则返回 true | x < y; |
> | 如果左操作数大于右操作数,则返回 true | x > y; |
<= | 如果左操作数小于或等于右操作数,则返回 true | x <= y; |
>= | 如果左操作数大于或等于右操作数,则返回 true | x >= y; |
相等运算符
相等运算符检查两个操作数是否相等。
运算符 | 描述 | 示例 | |
---|---|---|---|
== | 如果操作数相等,则返回 true,否则返回 false。 | x == y; | @ttHelpers.TryItLink("cid=cs-FUCaKJ") |
!= | 如果操作数不相等,则返回 true,否则返回 false。 | x != y; | @ttHelpers.TryItLink("cid=cs-MXvsl7") |
布尔逻辑运算符
布尔逻辑运算符对布尔操作数执行逻辑运算。
运算符 | 描述 | 示例 | |
---|---|---|---|
! | 反转布尔表达式的布尔结果。如果结果为 true 则返回 false,如果结果为 false 则返回 true。 | !false | @ttHelpers.TryItLink("cid=cs-9l4Mbq") |
&& | 计算其布尔操作数的逻辑 AND。如果两个操作数都为 true,则返回 true,否则返回 false。 | x && y; | @ttHelpers.TryItLink("cid=cs-s7QIlQ") |
|| | 计算其布尔操作数的逻辑 OR。当任一操作数为 true 时返回 true。 | x || y; | @ttHelpers.TryItLink("cid=cs-HkExSJ") |
运算符求值与优先级
表达式中操作数的求值从左到右开始。如果表达式中使用了多个运算符,则优先级较高的运算符在优先级较低的运算符之前求值。
下表列出了从高优先级到低优先级的运算符。
运算符 | 类别 |
---|---|
x.y, x?.y, x?[y], f(x), a[i], x++, x--, new, typeof, checked, unchecked, default, nameof, delegate, sizeof, stackalloc, x->y | 主运算符 |
+x, -x, !x, ~x, ++x, --x, ^x, (T)x, await, &x, *x, true and false | 一元运算符 |
x..y | 范围运算符 |
x * y, x / y, x % y | 乘法运算符 |
x + y, x - y | 加法运算符 |
x << y, x >> y | 移位运算符 |
x < y, x > y, x <= y, x >= y, is, as | 关系和类型测试运算符 |
x == y, x != y | 相等运算符 |
x & y | 布尔逻辑 AND |
x ^ y | 布尔逻辑 XOR |
x | y | 布尔逻辑 OR |
x && y | 条件 AND |
x || y | 条件 OR |
x ?? y | 空合并运算符 |
c ? t : f | 条件运算符 |
x = y, x += y, x -= y, x *= y, x /= y, x %= y, x &= y, x |= y, x ^= y, x <<= y, x >>= y, x ??= y, => | 赋值和 Lambda 声明 |
以下示例演示运算符优先级
示例:运算符优先级
int a = 5 + 3 * 3;
int b = 5 + 3 * 3 / 2;
int c = (5 + 3) * 3 / 2;
int d = (3 * 3) * (3 / 3 + 5);
详细了解 C# 运算符。