zhcn 编程语言 Golang Go 文件处理 非公開: C# 运算符

C# 运算符

运算符只是告诉编译器执行某些数学或逻辑运算的符号。 C# 拥有丰富的内置运算符,大致可分为以下几类:

  • 算术运算符。
  • 关系运算符。
  • 逻辑运算符。
  • 位运算符。
  • 赋值运算符;
  • 其他运营商。

我们来分别介绍一下这些运算符。

算术运算符

算术运算符是执行特定算术运算的符号。下表显示了 C# 支持的算术运算符:(假设变量 A = 10,变量 B = 20)

操作员解释例子
+加法运算符。对运算符的左操作数和右操作数执行加法运算。 A+B值为30
减法运算符。对运算符的左操作数和右操作数执行减法运算。 A-B值为-10
*乘法运算符。将运算符的左操作数和右操作数相乘。 A*B值为200
/分部操作员。将左操作数除以右操作数。 B/A值为2
%模运算符,除法后的余数B % A 值为 0
++自增运算符,将整数值加 1 A++ 值 11
自减运算符。整数值减 1。 A——值为9

这里我们将重点关注可以在变量之前或之后使用的自增和自减运算符。如果在变量之前,则表示先进行自增或自减操作,然后将值赋给变量。如果它出现在变量之后,则相反:它将被分配一个值。首先将其赋值给变量,然后进行自增或自减操作。

下面的例子展示了算术运算符在C#中的应用。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            int a = 10;
            int b = 20;

            Console.WriteLine("a + b = {0}", a + b);
            Console.WriteLine("a - b = {0}", a - b);
            Console.WriteLine("a * b = {0}", a * b);
            Console.WriteLine("a / b = {0}", a / b);
            Console.WriteLine("a % b = {0}", a % b);
            Console.WriteLine("++a の値は {0}", ++a);
            a = 10; // 変数 a に再び値を代入
            Console.WriteLine("a-- の値は {0}", a--);
            Console.WriteLine("a の値は {0}", a);
            Console.ReadLine();
        }
    }
} 

操作的结果将是:

a + b = 30
a – b = -10
a * b = 200
a / b = 0
a % b = 10
++a の値は 11
a– の値は 10
a の値は 9

关系运算符

关系运算符用于比较运算符的左右操作数。下表列出了 C# 支持的所有关系运算符:(假设变量 A = 10,变量 B = 20)

操作员解释例子
==检查两个操作数的值是否相等;如果相等,则条件为真。 (A == B) 不成立
!=检查两个操作数的值是否相等;如果不相等,则条件为真。 (A != B) 为真
>检查左操作数的值是否大于右操作数的值,如果是,则条件为 true。 (A > B) 不正确
<检查左操作数的值是否小于右操作数的值,如果是,则条件为真。 (A < B) 为真
>=检查左操作数的值是否大于或等于右操作数的值,如果是,则条件为真。 (A >= B) 不正确
<=检查左操作数的值是否小于或等于右操作数的值,如果是,则条件为真。 (A <= B) 为真

以下示例演示了 C# 中关系运算符的使用。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            int a = 10;
            int b = 20;

            if (a == b){
                Console.WriteLine("a は b と等しいです");
            }else{
                Console.WriteLine("a は b と等しくありません");
            }
            if (a < b){
                Console.WriteLine("a は b より小さいです");
            }else{
                Console.WriteLine("a は b 以上です");
            }
            if (a > b){
                Console.WriteLine("a は b より大きいです");
            }else{
                Console.WriteLine("a は b 未満です");
            }
            if (a <= b){
                Console.WriteLine("a は b 以下です");
            }
            if (b >= a){
                Console.WriteLine("b は a 以上です");
            }
        }
    }
} 

提示:稍后将更详细地解释本示例中使用的 if else 语句。

逻辑运算符

下表是 C# 中支持的逻辑运算符列表(假设变量 A 的布尔值为 true,变量 B 的布尔值为 false)。

操作员解释例子
&&逻辑与运算符。如果两个操作数都为 true,则结果为 true。 (A && B) 为假
||逻辑或运算符。如果两个操作数中有一个为 true,则结果为 true。 (A || B) 为真
!逻辑非运算符。用于反转操作数的逻辑状态。如果结果为真,则反转为假。 !(A && B) 为真

以下示例演示了 C# 中逻辑运算符的使用。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            bool a = true;
            bool b = false;
          
            if (a && b){
                Console.WriteLine("(a && b) condition is true");
            }else{
                Console.WriteLine("(a && b) condition is false");
            }
            if (a || b){
                Console.WriteLine("(a || b) condition is true");
            }else{
                Console.WriteLine("(a || b) condition is false");
            }
            if (!(a && b)){
                Console.WriteLine("!(a && b) condition is true");
            }else{
                Console.WriteLine("!(a && b) condition is false");
            }
            Console.ReadLine();
        }
    }
} 

(a && b) 条件为假
(a || b) 条件为真
!(a && b) 条件为真

按位运算符

位运算符用于对二进制位进行操作。 &、| 和 ^ 的真值表为:

p q普安Q p|q p^q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假设A = 60和B = 13,它们的二进制形式和按位结果为:

 A = 0011 1100
B = 0000 1101
-------------------
A&B = 0000 1100
A|B  = 0011 1101
A^B   = 0011 0001
~A   = 1100 0011 

下表列出了 C# 中支持的按位运算符(假设变量 A = 60,变量 B = 13)。

操作员解释例子
&按位与。对两个操作数的二进制位执行按位与运算。即如果两个数对应的二进制位均为1,则结果位为1;否则为0。 (A 和 B)为 12,即 0000 1100。
|按位或。对两个操作数的二进制位执行按位或运算。即两个数对应的二进制位其中一位为1,则结果为1;否则为0。 (A | B) 得到 61,或 0011 1101。
^按位异或。对两个操作数的二进制位执行按位异或运算。即两个数对应的二进制位不同,结果为1;否则,结果为0。 (A ^ B) 得到 49,或 0011 0001。
~按位取反。该运算符具有“翻转”位的效果。也就是说,0 变为 1,1 变为 0,包括符号位。 (~A) 得到 -61。这是 1100 0011
<<二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 << 2 得到 240,或 1111 0000。
>>二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 >> 2 得到 15。这是 0000 1111。

示例代码如下。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            int a = 60;            /* 60 = 0011 1100 */ 
            int b = 13;            /* 13 = 0000 1101 */
            int c = 0;         

            c = a & b;           /* 12 = 0000 1100 */
            Console.WriteLine("a & b の値は {0}", c );
            c = a | b;           /* 61 = 0011 1101 */
            Console.WriteLine("a | b の値は {0}", c);
            c = a ^ b;           /* 49 = 0011 0001 */
            Console.WriteLine("a ^ b の値は {0}", c);
            c = ~a;               /*-61 = 1100 0011 */
            Console.WriteLine("~a の値は {0}", c);
            c = a << 2;     /* 240 = 1111 0000 */
            Console.WriteLine("a << 2 の値は {0}", c);
            c = a >> 2;     /* 15 = 0000 1111 */
            Console.WriteLine("a >> 2 の値は {0}", c);
            Console.ReadLine();
        }
    }
} 

操作的结果将是:

a & b の値は 12
a | b の値は 61
a ^ b の値は 49
~a の値は -61
a << 2 の値は 240
a >> 2 の値は 15

赋值运算符

顾名思义,赋值运算符用于给变量赋值。下表列出了 C# 支持的赋值运算符。

操作员解释例子
=最简单的赋值运算符。将右操作数的值赋给左操作数。 C = A + B 将 A + B 的值赋给 C。
+=加法和赋值运算符;将右操作数与左操作数相加,并将结果赋给左操作数。 C += A 等价于 C = C + A
-=减法和赋值运算符从左操作数中减去右操作数,并将结果赋给左操作数。 C -= A 相当于 C = C – A
*=乘法和赋值运算符。将左右操作数相乘的结果赋给左操作数。 C *= A 相当于 C = C * A
/=除法和赋值运算符将左操作数除以右操作数,并将结果赋给左操作数。 C /= A 相当于 C = C / A
%=模数和赋值运算符。找到两个操作数的模并将其分配给左侧操作数。 C %= A 相当于 C = C % A
<<=左移和赋值运算符C <<= 2 相当于 C = C << 2
>>=右移和赋值运算符C >>= 2 相当于 C = C >> 2
&=位运算符和赋值运算符C &= 2 相当于 C = C & 2
^=按位异或和赋值运算符C ^= 2 相当于 C = C ^ 2。
|=位运算符和赋值运算符C |= 2 相当于 C = C | 2。

以下示例演示了 C# 中赋值运算符的使用。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            int a = 33;
            int c;

            c = a;
            Console.WriteLine("c = a の値は {0}", c);
            c += a;
            Console.WriteLine("c += a の値は {0}", c);
            c -= a;
            Console.WriteLine("c -= a の値は {0}", c);
            c *= a;
            Console.WriteLine("c *= a の値は {0}", c);
            c /= a;
            Console.WriteLine("c /= a の値は {0}", c);
            c = 123;
            c %= a;
            Console.WriteLine("c %= a の値は {0}", c);
            c <<= 2;
            Console.WriteLine("c <<= 2 の値は {0}", c);
            c >>= 2;
            Console.WriteLine("c >>= 2 の値は {0}", c);
            c &= 2;
            Console.WriteLine("c &= 2 の値は {0}", c);
            c ^= 2;
            Console.WriteLine("c ^= 2 の値は {0}", c);
            c |= 2;
            Console.WriteLine("c |= 2 の値は {0}", c);
            Console.ReadLine();
        }
    }
} 

操作的结果将是:

c = a の値は 33
c += a の値は 66
c -= a の値は 33
c *= a の値は 1089
c /= a の値は 33
c %= a の値は 24
c <<= 2 の値は 96
c >>= 2 の値は 24
c &= 2 の値は 0
c ^= 2 の値は 2
c |= 2 の値は 2

其他运营商

除了上面介绍的运算符之外,C#还支持其他几个重要的运算符,如下表所示。

操作员解释例子
sizeof()返回数据类型的大小。 sizeof(int),返回 4
typeof()返回类的类型类型(StreamReader);
&返回变量的地址&a 获取变量的实际地址
*变量指针*a; 指的是一个变量。
? :三元(ternary)运算符a>b ? X : Y;如果条件为真,则值为 X。否则,值为 Y。
is确定对象是否属于特定类型if( Ford is Car) // 检查 Ford 是否是 Car 类的对象
as需要转换。如果转换失败,不会引发异常。对象 obj = new StringReader(“Hello”);
StringReader r = obj 作为 StringReader;

以下示例显示了上述运算符的用法。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args){
            /* sizeof演算子の例 */
            Console.WriteLine("intのサイズは{0}です。", sizeof(int));
            Console.WriteLine("shortのサイズは{0}です。", sizeof(short));
            Console.WriteLine("doubleのサイズは{0}です。", sizeof(double));
        
            /* 三項演算子の例 */
            int a, b;
            a = 11;
            b = (a == 1) ? 20 : 30;
            Console.WriteLine("bの値は{0}です。", b);

            b = (a == 11) ? 20 : 30;
            Console.WriteLine("bの値は{0}です。", b);
            Console.ReadLine();
        }
    }
} 

操作的结果将是:

intのサイズは4です。
shortのサイズは2です。
doubleのサイズは8です。
bの値は30です。
bの値は20です。

通俗易懂的《C#运算符》讲解!您必须观看的最佳 2 个视频

[Khóa học lập trình #C#_nâng_cao] – Bài 10: #Dictionary trong C# | HowKteam
https://www.youtube.com/watch?v=YbLgdE4ejWI&pp=ygUTIEMjIOa8lOeul-WtkCZobD1KQQ%3D%3D
运算符只是告诉编译器执行某些数学或逻辑运算的符号。 C# 拥有丰富的内置运算符,大致可分为以下几类:

  • 算术运算符。
  • 关系运算符。
  • 逻辑运算符。
  • 位运算符。
  • 赋值运算符;
  • 其他运营商。

我们来分别介绍一下这些运算符。

算术运算符

算术运算符是执行特定算术运算的符号。下表显示了 C# 支持的算术运算符:(假设变量 A = 10,变量 B = 20)

操作员解释例子
+加法运算符。对运算符的左操作数和右操作数执行加法运算。 A+B值为30
减法运算符。对运算符的左操作数和右操作数执行减法运算。 A-B值为-10
*乘法运算符。将运算符的左操作数和右操作数相乘。 A*B值为200
/分部操作员。将左操作数除以右操作数。 B/A值为2
%模运算符,除法后的余数B % A 值为 0
++自增运算符,将整数值加 1 A++ 值 11
自减运算符。整数值减 1。 A——值为9

这里我们将重点关注可以在变量之前或之后使用的自增和自减运算符。如果在变量之前,则表示先进行自增或自减操作,然后将值赋给变量。如果它出现在变量之后,则相反:它将被分配一个值。首先将其赋值给变量,然后进行自增或自减操作。

下面的例子展示了算术运算符在C#中的应用。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            int a = 10;
            int b = 20;

            Console.WriteLine("a + b = {0}", a + b);
            Console.WriteLine("a - b = {0}", a - b);
            Console.WriteLine("a * b = {0}", a * b);
            Console.WriteLine("a / b = {0}", a / b);
            Console.WriteLine("a % b = {0}", a % b);
            Console.WriteLine("++a の値は {0}", ++a);
            a = 10; // 変数 a に再び値を代入
            Console.WriteLine("a-- の値は {0}", a--);
            Console.WriteLine("a の値は {0}", a);
            Console.ReadLine();
        }
    }
} 

操作的结果将是:

a + b = 30
a – b = -10
a * b = 200
a / b = 0
a % b = 10
++a の値は 11
a– の値は 10
a の値は 9

关系运算符

关系运算符用于比较运算符的左右操作数。下表列出了 C# 支持的所有关系运算符:(假设变量 A = 10,变量 B = 20)

操作员解释例子
==检查两个操作数的值是否相等;如果相等,则条件为真。 (A == B) 不成立
!=检查两个操作数的值是否相等;如果不相等,则条件为真。 (A != B) 为真
>检查左操作数的值是否大于右操作数的值,如果是,则条件为 true。 (A > B) 不正确
<检查左操作数的值是否小于右操作数的值,如果是,则条件为真。 (A < B) 为真
>=检查左操作数的值是否大于或等于右操作数的值,如果是,则条件为真。 (A >= B) 不正确
<=检查左操作数的值是否小于或等于右操作数的值,如果是,则条件为真。 (A <= B) 为真

以下示例演示了 C# 中关系运算符的使用。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            int a = 10;
            int b = 20;

            if (a == b){
                Console.WriteLine("a は b と等しいです");
            }else{
                Console.WriteLine("a は b と等しくありません");
            }
            if (a < b){
                Console.WriteLine("a は b より小さいです");
            }else{
                Console.WriteLine("a は b 以上です");
            }
            if (a > b){
                Console.WriteLine("a は b より大きいです");
            }else{
                Console.WriteLine("a は b 未満です");
            }
            if (a <= b){
                Console.WriteLine("a は b 以下です");
            }
            if (b >= a){
                Console.WriteLine("b は a 以上です");
            }
        }
    }
} 

提示:稍后将更详细地解释本示例中使用的 if else 语句。

逻辑运算符

下表是 C# 中支持的逻辑运算符列表(假设变量 A 的布尔值为 true,变量 B 的布尔值为 false)。

操作员解释例子
&&逻辑与运算符。如果两个操作数都为 true,则结果为 true。 (A && B) 为假
||逻辑或运算符。如果两个操作数中有一个为 true,则结果为 true。 (A || B) 为真
!逻辑非运算符。用于反转操作数的逻辑状态。如果结果为真,则反转为假。 !(A && B) 为真

以下示例演示了 C# 中逻辑运算符的使用。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            bool a = true;
            bool b = false;
          
            if (a && b){
                Console.WriteLine("(a && b) condition is true");
            }else{
                Console.WriteLine("(a && b) condition is false");
            }
            if (a || b){
                Console.WriteLine("(a || b) condition is true");
            }else{
                Console.WriteLine("(a || b) condition is false");
            }
            if (!(a && b)){
                Console.WriteLine("!(a && b) condition is true");
            }else{
                Console.WriteLine("!(a && b) condition is false");
            }
            Console.ReadLine();
        }
    }
} 

(a && b) 条件为假
(a || b) 条件为真
!(a && b) 条件为真

按位运算符

位运算符用于对二进制位进行操作。 &、| 和 ^ 的真值表为:

p q普安Q p|q p^q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假设A = 60和B = 13,它们的二进制形式和按位结果为:

 A = 0011 1100
B = 0000 1101
-------------------
A&B = 0000 1100
A|B  = 0011 1101
A^B   = 0011 0001
~A   = 1100 0011 

下表列出了 C# 中支持的按位运算符(假设变量 A = 60,变量 B = 13)。

操作员解释例子
&按位与。对两个操作数的二进制位执行按位与运算。即如果两个数对应的二进制位均为1,则结果位为1;否则为0。 (A 和 B)为 12,即 0000 1100。
|按位或。对两个操作数的二进制位执行按位或运算。即两个数对应的二进制位其中一位为1,则结果为1;否则为0。 (A | B) 得到 61,或 0011 1101。
^按位异或。对两个操作数的二进制位执行按位异或运算。即两个数对应的二进制位不同,结果为1;否则,结果为0。 (A ^ B) 得到 49,或 0011 0001。
~按位取反。该运算符具有“翻转”位的效果。也就是说,0 变为 1,1 变为 0,包括符号位。 (~A) 得到 -61。这是 1100 0011
<<二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 << 2 得到 240,或 1111 0000。
>>二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 >> 2 得到 15。这是 0000 1111。

示例代码如下。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            int a = 60;            /* 60 = 0011 1100 */ 
            int b = 13;            /* 13 = 0000 1101 */
            int c = 0;         

            c = a & b;           /* 12 = 0000 1100 */
            Console.WriteLine("a & b の値は {0}", c );
            c = a | b;           /* 61 = 0011 1101 */
            Console.WriteLine("a | b の値は {0}", c);
            c = a ^ b;           /* 49 = 0011 0001 */
            Console.WriteLine("a ^ b の値は {0}", c);
            c = ~a;               /*-61 = 1100 0011 */
            Console.WriteLine("~a の値は {0}", c);
            c = a << 2;     /* 240 = 1111 0000 */
            Console.WriteLine("a << 2 の値は {0}", c);
            c = a >> 2;     /* 15 = 0000 1111 */
            Console.WriteLine("a >> 2 の値は {0}", c);
            Console.ReadLine();
        }
    }
} 

操作的结果将是:

a & b の値は 12
a | b の値は 61
a ^ b の値は 49
~a の値は -61
a << 2 の値は 240
a >> 2 の値は 15

赋值运算符

顾名思义,赋值运算符用于给变量赋值。下表列出了 C# 支持的赋值运算符。

操作员解释例子
=最简单的赋值运算符。将右操作数的值赋给左操作数。 C = A + B 将 A + B 的值赋给 C。
+=加法和赋值运算符;将右操作数与左操作数相加,并将结果赋给左操作数。 C += A 等价于 C = C + A
-=减法和赋值运算符从左操作数中减去右操作数,并将结果赋给左操作数。 C -= A 相当于 C = C – A
*=乘法和赋值运算符。将左右操作数相乘的结果赋给左操作数。 C *= A 相当于 C = C * A
/=除法和赋值运算符将左操作数除以右操作数,并将结果赋给左操作数。 C /= A 相当于 C = C / A
%=模数和赋值运算符。找到两个操作数的模并将其分配给左侧操作数。 C %= A 相当于 C = C % A
<<=左移和赋值运算符C <<= 2 相当于 C = C << 2
>>=右移和赋值运算符C >>= 2 相当于 C = C >> 2
&=位运算符和赋值运算符C &= 2 相当于 C = C & 2
^=按位异或和赋值运算符C ^= 2 相当于 C = C ^ 2。
|=位运算符和赋值运算符C |= 2 相当于 C = C | 2。

以下示例演示了 C# 中赋值运算符的使用。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            int a = 33;
            int c;

            c = a;
            Console.WriteLine("c = a の値は {0}", c);
            c += a;
            Console.WriteLine("c += a の値は {0}", c);
            c -= a;
            Console.WriteLine("c -= a の値は {0}", c);
            c *= a;
            Console.WriteLine("c *= a の値は {0}", c);
            c /= a;
            Console.WriteLine("c /= a の値は {0}", c);
            c = 123;
            c %= a;
            Console.WriteLine("c %= a の値は {0}", c);
            c <<= 2;
            Console.WriteLine("c <<= 2 の値は {0}", c);
            c >>= 2;
            Console.WriteLine("c >>= 2 の値は {0}", c);
            c &= 2;
            Console.WriteLine("c &= 2 の値は {0}", c);
            c ^= 2;
            Console.WriteLine("c ^= 2 の値は {0}", c);
            c |= 2;
            Console.WriteLine("c |= 2 の値は {0}", c);
            Console.ReadLine();
        }
    }
} 

操作的结果将是:

c = a の値は 33
c += a の値は 66
c -= a の値は 33
c *= a の値は 1089
c /= a の値は 33
c %= a の値は 24
c <<= 2 の値は 96
c >>= 2 の値は 24
c &= 2 の値は 0
c ^= 2 の値は 2
c |= 2 の値は 2

其他运营商

除了上面介绍的运算符之外,C#还支持其他几个重要的运算符,如下表所示。

操作员解释例子
sizeof()返回数据类型的大小。 sizeof(int),返回 4
typeof()返回类的类型类型(StreamReader);
&返回变量的地址&a 获取变量的实际地址
*变量指针*a; 指的是一个变量。
? :三元(ternary)运算符a>b ? X : Y;如果条件为真,则值为 X。否则,值为 Y。
is确定对象是否属于特定类型if( Ford is Car) // 检查 Ford 是否是 Car 类的对象
as需要转换。如果转换失败,不会引发异常。对象 obj = new StringReader(“Hello”);
StringReader r = obj 作为 StringReader;

以下示例显示了上述运算符的用法。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args){
            /* sizeof演算子の例 */
            Console.WriteLine("intのサイズは{0}です。", sizeof(int));
            Console.WriteLine("shortのサイズは{0}です。", sizeof(short));
            Console.WriteLine("doubleのサイズは{0}です。", sizeof(double));
        
            /* 三項演算子の例 */
            int a, b;
            a = 11;
            b = (a == 1) ? 20 : 30;
            Console.WriteLine("bの値は{0}です。", b);

            b = (a == 11) ? 20 : 30;
            Console.WriteLine("bの値は{0}です。", b);
            Console.ReadLine();
        }
    }
} 

操作的结果将是:

intのサイズは4です。
shortのサイズは2です。
doubleのサイズは8です。
bの値は30です。
bの値は20です。

通俗易懂的《C#运算符》讲解!您必须观看的最佳 2 个视频

[Khóa học lập trình #C#_nâng_cao] – Bài 10: #Dictionary trong C# | HowKteam
https://www.youtube.com/watch?v=YbLgdE4ejWI&pp=ygUTIEMjIOa8lOeul-WtkCZobD1KQQ%3D%3D