原文: https://www.programiz.com/csharp-programming/operators

在本文中,我们将学习有关 C# 编程语言中不同类型的运算符以及如何使用它们的所有知识。

运算符是用于对操作数执行运算的符号。 操作数可以是变量和/或常量。

例如,在2+3中的中,+是用于执行加法运算的运算符,而23是操作数。

运算符用于在程序中操纵变量和值。 C# 支持许多运算符,这些运算符根据它们执行的操作类型进行分类。


1.基本赋值运算符

基本赋值运算符(=)用于为变量赋值。 例如,

  1. double x;
  2. x = 50.05;

在此,将 50.05 分配给x

示例 1:基本分配运算符

  1. using System;
  2. namespace Operator
  3. {
  4. class AssignmentOperator
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int firstNumber, secondNumber;
  9. // Assigning a constant to variable
  10. firstNumber = 10;
  11. Console.WriteLine("First Number = {0}", firstNumber);
  12. // Assigning a variable to another variable
  13. secondNumber = firstNumber;
  14. Console.WriteLine("Second Number = {0}", secondNumber);
  15. }
  16. }
  17. }

当我们运行程序时,输出将是:

  1. First Number = 10
  2. Second Number = 10

这是一个简单的示例,演示了赋值运算符的用法。

您可能已经注意到在示例中使用了大括号{ }。 我们将以字符串格式化讨论它们。 现在,请记住,{0}被字符串后面的第一个变量替换,{1}被第二个变量替换,依此类推。


2.算术运算符

算术运算符用于执行算术运算,例如加法,减法,乘法,除法等。

例如,

  1. int x = 5;
  2. int y = 10;
  3. int z = x + y;// z = 15

C# 算术运算符

运算符 运算符名称 示例
+ 加法运算符 6 + 3等于 9
- 减法运算符 10 - 6等于 4
* 乘法运算符 4 * 2等于 8
/ 除法运算符 10 / 5等于 2
% 模运算符(余数) 16 % 3等于 1

示例 2:算术运算符

  1. using System;
  2. namespace Operator
  3. {
  4. class ArithmeticOperator
  5. {
  6. public static void Main(string[] args)
  7. {
  8. double firstNumber = 14.40, secondNumber = 4.60, result;
  9. int num1 = 26, num2 = 4, rem;
  10. // Addition operator
  11. result = firstNumber + secondNumber;
  12. Console.WriteLine("{0} + {1} = {2}", firstNumber, secondNumber, result);
  13. // Subtraction operator
  14. result = firstNumber - secondNumber;
  15. Console.WriteLine("{0} - {1} = {2}", firstNumber, secondNumber, result);
  16. // Multiplication operator
  17. result = firstNumber * secondNumber;
  18. Console.WriteLine("{0} * {1} = {2}", firstNumber, secondNumber, result);
  19. // Division operator
  20. result = firstNumber / secondNumber;
  21. Console.WriteLine("{0} / {1} = {2}", firstNumber, secondNumber, result);
  22. // Modulo operator
  23. rem = num1 % num2;
  24. Console.WriteLine("{0} % {1} = {2}", num1, num2, rem);
  25. }
  26. }
  27. }

当我们运行程序时,输出将是:

  1. 14.4 + 4.6 = 19
  2. 14.4 - 4.6 = 9.8
  3. 14.4 * 4.6 = 66.24
  4. 14.4 / 4.6 = 3.1304347826087
  5. 26 % 4 = 2

在上面的示例中执行算术运算。 变量可以用语句中的常量替换。 例如,

  1. result = 4.5 + 2.7 ; // result will hold 7.2
  2. result = firstNumber - 3.2; // result will hold 11.2

3.关系运算符

关系运算符用于检查两个操作数之间的关系。 如果该关系为真,则结果为true,否则结果为false

关系运算符用于决策和循环。

C# 关系运算符

运算符 运算符名称 示例
== 等于 6 == 4计算为false
> 大于 3 > -1计算为true
< 小于 5 < 3计算为false
>= 大于或等于 4 >= 4计算为true
<= 小于或等于 5 <= 3计算为false
!= 不等于 10 != 2计算为true

示例 3:关系运算符

  1. using System;
  2. namespace Operator
  3. {
  4. class RelationalOperator
  5. {
  6. public static void Main(string[] args)
  7. {
  8. bool result;
  9. int firstNumber = 10, secondNumber = 20;
  10. result = (firstNumber==secondNumber);
  11. Console.WriteLine("{0} == {1} returns {2}",firstNumber, secondNumber, result);
  12. result = (firstNumber > secondNumber);
  13. Console.WriteLine("{0} > {1} returns {2}",firstNumber, secondNumber, result);
  14. result = (firstNumber < secondNumber);
  15. Console.WriteLine("{0} < {1} returns {2}",firstNumber, secondNumber, result);
  16. result = (firstNumber >= secondNumber);
  17. Console.WriteLine("{0} >= {1} returns {2}",firstNumber, secondNumber, result);
  18. result = (firstNumber <= secondNumber);
  19. Console.WriteLine("{0} <= {1} returns {2}",firstNumber, secondNumber, result);
  20. result = (firstNumber != secondNumber);
  21. Console.WriteLine("{0} != {1} returns {2}",firstNumber, secondNumber, result);
  22. }
  23. }
  24. }

当我们运行程序时,输出将是:

  1. 10 == 20 returns False
  2. 10 > 20 returns False
  3. 10 < 20 returns True
  4. 10 >= 20 returns False
  5. 10 <= 20 returns True
  6. 10 != 20 returns True

4.逻辑运算符

逻辑运算符用于执行诸如andor之类的逻辑运算。 逻辑运算符对布尔表达式(truefalse)进行操作,并返回布尔值。 逻辑运算符用于决策和循环。

这是如何为逻辑ANDOR运算符求值结果的方法。

C# 逻辑运算符

操作数 1 操作数 2 或(` `) 且(&&
true true true true
true false true false
false true true false
false false false false

简单来说,该表可以总结为:

  • 如果操作数之一为true,则OR运算符会将其求值为true
  • 如果操作数之一为false,则AND运算符会将其求值为false

示例 4:逻辑运算符

  1. using System;
  2. namespace Operator
  3. {
  4. class LogicalOperator
  5. {
  6. public static void Main(string[] args)
  7. {
  8. bool result;
  9. int firstNumber = 10, secondNumber = 20;
  10. // OR operator
  11. result = (firstNumber == secondNumber) || (firstNumber > 5);
  12. Console.WriteLine(result);
  13. // AND operator
  14. result = (firstNumber == secondNumber) && (firstNumber > 5);
  15. Console.WriteLine(result);
  16. }
  17. }
  18. }

当我们运行程序时,输出将是:

  1. True
  2. False

5.一元运算符

与其他运算符不同,一元运算符对单个操作数进行运算。

C# 一元运算符

运算符 运算符名称 描述
+ 一元加 保留操作数的原样
- 一元减 反转操作数的符号
++ 递增 值增加 1
-- 递减 递减值 1
! 逻辑否定(非) 反转布尔值

示例 5:一元运算符

  1. using System;
  2. namespace Operator
  3. {
  4. class UnaryOperator
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int number = 10, result;
  9. bool flag = true;
  10. result = +number;
  11. Console.WriteLine("+number = " + result);
  12. result = -number;
  13. Console.WriteLine("-number = " + result);
  14. result = ++number;
  15. Console.WriteLine("++number = " + result);
  16. result = --number;
  17. Console.WriteLine("--number = " + result);
  18. Console.WriteLine("!flag = " + (!flag));
  19. }
  20. }
  21. }

当我们运行程序时,输出将是:

  1. +number = 10
  2. -number = -10
  3. ++number = 11
  4. --number = 10
  5. !flag = False

递增(++)和递减(--)运算符可用作前缀和后缀。 如果用作前缀,则变量的值更改将在同一行上显示;如果用作后缀,则变量的值更改将在下一行上显示。 通过下面的示例将很清楚。

示例 6:C# 中的后置和前置递增运算符

  1. using System;
  2. namespace Operator
  3. {
  4. class UnaryOperator
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int number = 10;
  9. Console.WriteLine((number++));
  10. Console.WriteLine((number));
  11. Console.WriteLine((++number));
  12. Console.WriteLine((number));
  13. }
  14. }
  15. }

当我们运行程序时,输出将是:

  1. 10
  2. 11
  3. 12
  4. 12

我们可以看到使用++作为前缀和后缀的效果。 当在操作数之后使用++时,首先求值该值,然后将其增加1。 因此,声明

  1. Console.WriteLine((number++));

打印10而不是11。 值打印后,数字值增加1

++用作前缀时,该过程相反。 该值在打印前增加。 因此,声明

  1. Console.WriteLine((++number));

打印12

减量运算符(--)的情况相同。


6.三元运算符

三元运算符? :对三个操作数进行运算。 它是if-then-else语句的简写。 三元运算符可以按如下方式使用:

  1. variable = Condition? Expression1 : Expression2;

三元运算符的工作方式如下:

  • 如果条件表示的表达式为true,则将Expression1的结果分配给变量。
  • 如果为false,则将Expression2的结果分配给变量。

示例 7:三元运算符

  1. using System;
  2. namespace Operator
  3. {
  4. class TernaryOperator
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int number = 10;
  9. string result;
  10. result = (number % 2 == 0)? "Even Number" : "Odd Number";
  11. Console.WriteLine("{0} is {1}", number, result);
  12. }
  13. }
  14. }

当我们运行程序时,输出将是:

  1. 10 is Even Number

要了解更多信息,请访问 C# 三元运算符


7.按位和移位运算符

按位和移位运算符用于执行位操作。

C# 按位和移位操作

运算符 运算符名称
~ 按位补码
& 按位与
` ` 按位或
^ 按位异或
<< 按位左移
>> 按位右移

例 8:按位和移位操作

  1. using System;
  2. namespace Operator
  3. {
  4. class BitOperator
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int firstNumber = 10;
  9. int secondNumber = 20;
  10. int result;
  11. result = ~firstNumber;
  12. Console.WriteLine("~{0} = {1}", firstNumber, result);
  13. result = firstNumber & secondNumber;
  14. Console.WriteLine("{0} & {1} = {2}", firstNumber,secondNumber, result);
  15. result = firstNumber | secondNumber;
  16. Console.WriteLine("{0} | {1} = {2}", firstNumber,secondNumber, result);
  17. result = firstNumber ^ secondNumber;
  18. Console.WriteLine("{0} ^ {1} = {2}", firstNumber,secondNumber, result);
  19. result = firstNumber << 2;
  20. Console.WriteLine("{0} << 2 = {1}", firstNumber, result);
  21. result = firstNumber >> 2;
  22. Console.WriteLine("{0} >> 2 = {1}", firstNumber, result);
  23. }
  24. }
  25. }

当我们运行程序时,输出将是:

  1. ~10 = -11
  2. 10 & 20 = 0
  3. 10 | 20 = 30
  4. 10 ^ 20 = 30
  5. 10 << 2 = 40
  6. 10 >> 2 = 2

要了解更多信息,请访问 C# 按位和位移位运算符


8.复合赋值运算符

C# 复合赋值运算符

运算符 运算符名称 示例 相当于
+= 加法赋值 x += 5 x = x + 5
-= 减法赋值 x -= 5 x = x - 5
*= 乘法赋值 x *= 5 x = x * 5
/= 除法赋值 x /= 5 x = x / 5
%= 模赋值 x %= 5 x = x % 5
&= 按位与赋值 x &= 5 x = x & 5
` =` 按位或赋值 x &#124;= 5 x = x &#124; 5
^= 按位异或赋值 x ^= 5 x = x ^ 5
<<= 左移赋值 x <<= 5 x = x << 5
>>= 右移赋值 x >>= 5 x = x >> 5
=> Lambda 运算符 x => x*x Returns x*x

示例 9:复合赋值运算符

  1. using System;
  2. namespace Operator
  3. {
  4. class BitOperator
  5. {
  6. public static void Main(string[] args)
  7. {
  8. int number = 10;
  9. number += 5;
  10. Console.WriteLine(number);
  11. number -= 3;
  12. Console.WriteLine(number);
  13. number *= 2;
  14. Console.WriteLine(number);
  15. number /= 3;
  16. Console.WriteLine(number);
  17. number %= 3;
  18. Console.WriteLine(number);
  19. number &= 10;
  20. Console.WriteLine(number);
  21. number |= 14;
  22. Console.WriteLine(number);
  23. number ^= 12;
  24. Console.WriteLine(number);
  25. number <<= 2;
  26. Console.WriteLine(number);
  27. number >>= 3;
  28. Console.WriteLine(number);
  29. }
  30. }
  31. }

当我们运行程序时,输出将是:

  1. 15
  2. 12
  3. 24
  4. 8
  5. 2
  6. 2
  7. 14
  8. 2
  9. 8
  10. 1

我们将在后面的教程中讨论 Lambda 运算符