🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# C# 运算符 > 原文: [https://www.programiz.com/csharp-programming/operators](https://www.programiz.com/csharp-programming/operators) #### 在本文中,我们将学习有关 C# 编程语言中不同类型的运算符以及如何使用它们的所有知识。 运算符是用于对操作数执行运算的符号。 操作数可以是变量和/或常量。 **例如,在`2+3`中的**中,`+`是用于执行加法运算的运算符,而`2`和`3`是操作数。 运算符用于在程序中操纵变量和值。 C# 支持许多运算符,这些运算符根据它们执行的操作类型进行分类。 * * * ## 1.基本赋值运算符 基本赋值运算符(`=`)用于为变量赋值。 例如, ```cs double x; x = 50.05; ``` 在此,将 50.05 分配给`x`。 ### 示例 1:基本分配运算符 ```cs using System; namespace Operator { class AssignmentOperator { public static void Main(string[] args) { int firstNumber, secondNumber; // Assigning a constant to variable firstNumber = 10; Console.WriteLine("First Number = {0}", firstNumber); // Assigning a variable to another variable secondNumber = firstNumber; Console.WriteLine("Second Number = {0}", secondNumber); } } } ``` 当我们运行程序时,输出将是: ```cs First Number = 10 Second Number = 10 ``` 这是一个简单的示例,演示了赋值运算符的用法。 您可能已经注意到在示例中使用了大括号`{ }`。 我们将以*字符串格式化*讨论它们。 现在,请记住,`{0}`被字符串后面的第一个变量替换,`{1}`被第二个变量替换,依此类推。 * * * ## 2.算术运算符 算术运算符用于执行算术运算,例如加法,减法,乘法,除法等。 例如, ```cs int x = 5; int y = 10; int z = x + y;// z = 15 ``` C# 算术运算符 | 运算符 | 运算符名称 | 示例 | | --- | --- | --- | | `+` | 加法运算符 | `6 + 3`等于 9 | | `-` | 减法运算符 | `10 - 6`等于 4 | | `*` | 乘法运算符 | `4 * 2`等于 8 | | `/` | 除法运算符 | `10 / 5`等于 2 | | `%` | 模运算符(余数) | `16 % 3`等于 1 | ### 示例 2:算术运算符 ```cs using System; namespace Operator { class ArithmeticOperator { public static void Main(string[] args) { double firstNumber = 14.40, secondNumber = 4.60, result; int num1 = 26, num2 = 4, rem; // Addition operator result = firstNumber + secondNumber; Console.WriteLine("{0} + {1} = {2}", firstNumber, secondNumber, result); // Subtraction operator result = firstNumber - secondNumber; Console.WriteLine("{0} - {1} = {2}", firstNumber, secondNumber, result); // Multiplication operator result = firstNumber * secondNumber; Console.WriteLine("{0} * {1} = {2}", firstNumber, secondNumber, result); // Division operator result = firstNumber / secondNumber; Console.WriteLine("{0} / {1} = {2}", firstNumber, secondNumber, result); // Modulo operator rem = num1 % num2; Console.WriteLine("{0} % {1} = {2}", num1, num2, rem); } } } ``` 当我们运行程序时,输出将是: ```cs 14.4 + 4.6 = 19 14.4 - 4.6 = 9.8 14.4 * 4.6 = 66.24 14.4 / 4.6 = 3.1304347826087 26 % 4 = 2 ``` 在上面的示例中执行算术运算。 变量可以用语句中的常量替换。 例如, ```cs result = 4.5 + 2.7 ; // result will hold 7.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:关系运算符 ```cs using System; namespace Operator { class RelationalOperator { public static void Main(string[] args) { bool result; int firstNumber = 10, secondNumber = 20; result = (firstNumber==secondNumber); Console.WriteLine("{0} == {1} returns {2}",firstNumber, secondNumber, result); result = (firstNumber > secondNumber); Console.WriteLine("{0} > {1} returns {2}",firstNumber, secondNumber, result); result = (firstNumber < secondNumber); Console.WriteLine("{0} < {1} returns {2}",firstNumber, secondNumber, result); result = (firstNumber >= secondNumber); Console.WriteLine("{0} >= {1} returns {2}",firstNumber, secondNumber, result); result = (firstNumber <= secondNumber); Console.WriteLine("{0} <= {1} returns {2}",firstNumber, secondNumber, result); result = (firstNumber != secondNumber); Console.WriteLine("{0} != {1} returns {2}",firstNumber, secondNumber, result); } } } ``` 当我们运行程序时,输出将是: ```cs 10 == 20 returns False 10 > 20 returns False 10 < 20 returns True 10 >= 20 returns False 10 <= 20 returns True 10 != 20 returns True ``` * * * ## 4.逻辑运算符 逻辑运算符用于执行诸如`and`,`or`之类的逻辑运算。 逻辑运算符对布尔表达式(`true`和`false`)进行操作,并返回布尔值。 逻辑运算符用于决策和循环。 这是如何为逻辑`AND`和`OR`运算符求值结果的方法。 C# 逻辑运算符 | 操作数 1 | 操作数 2 | 或(<code>&#124;&#124;</code>) | 且(`&&`) | | --- | --- | --- | --- | | `true` | `true` | `true` | `true` | | `true` | `false` | `true` | `false` | | `false` | `true` | `true` | `false` | | `false` | `false` | `false` | `false` | 简单来说,该表可以总结为: * 如果操作数之一为`true`,则`OR`运算符会将其求值为`true`。 * 如果操作数之一为`false`,则`AND`运算符会将其求值为`false`。 ### 示例 4:逻辑运算符 ```cs using System; namespace Operator { class LogicalOperator { public static void Main(string[] args) { bool result; int firstNumber = 10, secondNumber = 20; // OR operator result = (firstNumber == secondNumber) || (firstNumber > 5); Console.WriteLine(result); // AND operator result = (firstNumber == secondNumber) && (firstNumber > 5); Console.WriteLine(result); } } } ``` 当我们运行程序时,输出将是: ```cs True False ``` * * * ## 5.一元运算符 与其他运算符不同,一元运算符对单个操作数进行运算。 C# 一元运算符 | 运算符 | 运算符名称 | 描述 | | --- | --- | --- | | `+` | 一元加 | 保留操作数的原样 | | `-` | 一元减 | 反转操作数的符号 | | `++` | 递增 | 值增加 1 | | `--` | 递减 | 递减值 1 | | `!` | 逻辑否定(非) | 反转布尔值 | ### 示例 5:一元运算符 ```cs using System; namespace Operator { class UnaryOperator { public static void Main(string[] args) { int number = 10, result; bool flag = true; result = +number; Console.WriteLine("+number = " + result); result = -number; Console.WriteLine("-number = " + result); result = ++number; Console.WriteLine("++number = " + result); result = --number; Console.WriteLine("--number = " + result); Console.WriteLine("!flag = " + (!flag)); } } } ``` 当我们运行程序时,输出将是: ```cs +number = 10 -number = -10 ++number = 11 --number = 10 !flag = False ``` 递增`(++)`和递减`(--)`运算符可用作前缀和后缀。 如果用作前缀,则变量的值更改将在同一行上显示;如果用作后缀,则变量的值更改将在下一行上显示。 通过下面的示例将很清楚。 ### 示例 6:C# 中的后置和前置递增运算符 ```cs using System; namespace Operator { class UnaryOperator { public static void Main(string[] args) { int number = 10; Console.WriteLine((number++)); Console.WriteLine((number)); Console.WriteLine((++number)); Console.WriteLine((number)); } } } ``` 当我们运行程序时,输出将是: ```cs 10 11 12 12 ``` 我们可以看到使用`++`作为前缀和后缀的效果。 当在操作数之后使用`++`时,首先求值该值,然后将其增加`1`。 因此,声明 ```cs Console.WriteLine((number++)); ``` 打印`10`而不是`11`。 值打印后,数字值增加`1`。 当`++`用作前缀时,该过程相反。 该值在打印前增加。 因此,声明 ```cs Console.WriteLine((++number)); ``` 打印`12`。 减量运算符`(--)`的情况相同。 * * * ## 6.三元运算符 三元运算符`? :`对三个操作数进行运算。 它是`if-then-else`语句的简写。 三元运算符可以按如下方式使用: ```cs variable = Condition? Expression1 : Expression2; ``` 三元运算符的工作方式如下: * 如果条件表示的表达式为`true`,则将`Expression1`的结果分配给变量。 * 如果为`false`,则将`Expression2`的结果分配给变量。 ### 示例 7:三元运算符 ```cs using System; namespace Operator { class TernaryOperator { public static void Main(string[] args) { int number = 10; string result; result = (number % 2 == 0)? "Even Number" : "Odd Number"; Console.WriteLine("{0} is {1}", number, result); } } } ``` 当我们运行程序时,输出将是: ```cs 10 is Even Number ``` 要了解更多信息,请访问 *C# 三元运算符*。 * * * ## 7.按位和移位运算符 按位和移位运算符用于执行位操作。 C# 按位和移位操作 | 运算符 | 运算符名称 | | --- | --- | | `~` | 按位补码 | | `&` | 按位与 | | <code>&#124;</code> | 按位或 | | `^` | 按位异或 | | `<<` | 按位左移 | | `>>` | 按位右移 | ### 例 8:按位和移位操作 ```cs using System; namespace Operator { class BitOperator { public static void Main(string[] args) { int firstNumber = 10; int secondNumber = 20; int result; result = ~firstNumber; Console.WriteLine("~{0} = {1}", firstNumber, result); result = firstNumber & secondNumber; Console.WriteLine("{0} & {1} = {2}", firstNumber,secondNumber, result); result = firstNumber | secondNumber; Console.WriteLine("{0} | {1} = {2}", firstNumber,secondNumber, result); result = firstNumber ^ secondNumber; Console.WriteLine("{0} ^ {1} = {2}", firstNumber,secondNumber, result); result = firstNumber << 2; Console.WriteLine("{0} << 2 = {1}", firstNumber, result); result = firstNumber >> 2; Console.WriteLine("{0} >> 2 = {1}", firstNumber, result); } } } ``` 当我们运行程序时,输出将是: ```cs ~10 = -11 10 & 20 = 0 10 | 20 = 30 10 ^ 20 = 30 10 << 2 = 40 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` | | <code>&#124;=</code> | 按位或赋值 | `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:复合赋值运算符 ```cs using System; namespace Operator { class BitOperator { public static void Main(string[] args) { int number = 10; number += 5; Console.WriteLine(number); number -= 3; Console.WriteLine(number); number *= 2; Console.WriteLine(number); number /= 3; Console.WriteLine(number); number %= 3; Console.WriteLine(number); number &= 10; Console.WriteLine(number); number |= 14; Console.WriteLine(number); number ^= 12; Console.WriteLine(number); number <<= 2; Console.WriteLine(number); number >>= 3; Console.WriteLine(number); } } } ``` 当我们运行程序时,输出将是: ```cs 15 12 24 8 2 2 14 2 8 1 ``` 我们将在后面的教程中讨论 *Lambda 运算符*。