优秀的编程知识分享平台

网站首页 > 技术文章 正文

C# 中的操作符(c#中@用法)

nanyue 2024-07-22 13:51:31 技术文章 13 ℃

1.1.1. 什么是操作符?

操作符是用于执行操作的符号。C#提供了丰富的操作符,用于各种常见的编程任务。操作符可以应用于变量和值,执行算术、比较、逻辑、位、赋值和其他操作。

1.1.2. 算术操作符

算术操作符用于执行基本的数学运算。C#中的常见算术操作符如下:

操作符

描述

示例

+

加法

a + b

-

减法

a - b

*

乘法

a * b

/

除法

a / b

%

取模(余数)

a % b

++

自增

a++

--

自减

a--

示例代码:

int a = 10;

int b = 3;

int sum = a + b; // 13

int difference = a - b; // 7

int product = a * b; // 30

int quotient = a / b; // 3

int remainder = a % b; // 1

a++; // 11

b--; // 2

1.1.3. 关系操作符

关系操作符用于比较两个值或变量。C#中的常见关系操作符如下:

操作符

描述

示例

==

等于

a == b

!=

不等于

a != b

>

大于

a > b

<

小于

a < b

>=

大于或等于

a >= b

<=

小于或等于

a <= b

示例代码:

int a = 10;

int b = 3;

bool isEqual = (a == b); // false

bool isNotEqual = (a != b); // true

bool isGreater = (a > b); // true

bool isLess = (a < b); // false

bool isGreaterOrEqual = (a >= b); // true

bool isLessOrEqual = (a <= b); // false

1.1.4. 逻辑操作符

逻辑操作符用于执行布尔逻辑运算。C#中的常见逻辑操作符如下:

操作符

描述

示例

&&

逻辑与(AND)

a && b

||

逻辑或(OR)

a || b

!

逻辑非(NOT)

!a

示例代码:

bool a = true;

bool b = false;

bool result1 = a && b; // false

bool result2 = a || b; // true

bool result3 = !a; // false

1.1.5. 位操作符

位操作符用于按位(比特位)操作整数类型的数据,所以位操作符都是操作二进制数的。C#中的常见位操作符如下:

操作符

描述

示例

&

按位与(AND)

a & b

|

按位或(OR)

a | b

^

按位异或(XOR)

a ^ b

~

按位取反(NOT)

~a

<<

左移

a << 2

>>

右移

a >> 2


示例代码:

int a = 5; // 0101

int b = 3; // 0011

int result1 = a & b; // 0001 (1)

int result2 = a | b; // 0111 (7)

int result3 = a ^ b; // 0110 (6)

int result4 = ~a; // 1010 (按位取反)

int result5 = a << 2; // 10100 (20)

int result6 = a >> 2; // 0001 (1)

位操作的左移、右移如下图所示:



1.1.6. 赋值操作符

赋值操作符用于给变量赋值。C#中的常见赋值操作符如下:

操作符

描述

示例

等价于

=

简单赋值

a = b


+=

加且赋值

a += b

a = a + b

-=

减且赋值

a -= b

a = a - b

*=

乘且赋值

a *= b

a = a * b

/=

除且赋值

a /= b

a = a / b

%=

取模且赋值

a %= b

a = a % b

&=

按位与且赋值

a &= b

a = a & b

|=

按位或且赋值

a |= b

a = a | b

^=

按位异或且赋值

a ^= b

a = a ^ b

<<=

左移且赋值

a <<= 2

a = a << 2

>>=

右移且赋值

a >>= 2

a = a >> 2

示例代码:

int a = 10;

a += 5; // 15

a -= 3; // 12

a *= 2; // 24

a /= 4; // 6

a %= 3; // 0

a &= 2; // 0

a |= 1; // 1

a ^= 3; // 2

a <<= 2; // 8

a >>= 1; // 4

1.1.7. 条件操作符

条件操作符也称三元操作符,用于根据条件表达式的真假值选择不同的结果。语法如下:

condition ? trueResult : falseResult;

示例代码:

int a = 10;

int b = 5;

int max = (a > b) ? a : b; // max = 10

1.1.8. 其他操作符

C#中还有一些其他的操作符,如typeof、sizeof、is、as等。

1.1.8.1. typeof

typeof用于获取类型的Type对象。

Type t = typeof(int); // t = System.Int32

1.1.8.2. sizeof

sizeof用于获取值类型的大小。

int size = sizeof(int); // size = 4

1.1.8.3. is

is用于检查对象是否是某个类型。

object obj = "hello";

bool isString = obj is string; // true

1.1.8.4. as

as用于进行类型转换,如果转换失败返回null。

object obj = "hello";

string str = obj as string; // str = "hello"

1.1.9. 运算符的优先级和结合性

运算符的优先级和结合性决定了运算的执行顺序。在表达式中,具有较高优先级的运算符先于优先级较低的运算符执行。结合性决定了具有相同优先级的运算符的计算顺序。运算符优先级表如下图所示,但我们记不住优先级时,加个小括号就行了。

表 2-1 运算符优先级表

优先级

运算符

描述

结合性

1

( )

括号

从左到右

2

++, --, !, ~

单目运算符

从右到左

3

*, /, %

乘法、除法、取模

从左到右

4

+, -

加法、减法

从左到右

5

<<, >>

移位运算

从左到右

6

<, <=, >, >=

关系运算符

从左到右

7

==, !=

相等运算符

从左到右

8

&

按位与

从左到右

9

^

按位异或

从左到右

10

|

按位或

从左到右

11

&&

逻辑与

从左到右

12

||

逻辑或

从左到右

13

? :

条件运算符

从右到左

14

=, +=, -=, *=, /=, %=

赋值运算符

从右到左

以下是C#中常见运算符的优先级表,从高到低排列:

示例代码:

int a = 10;

int b = 5;

int c = a + b * 2; // c = 20,乘法优先于加法

int d = (a + b) * 2; // d = 30,括号改变了优先级

1.1.10. 运算符重载

1.1.10.1. 运算符重载语法

运算符重载允许为自定义类型(类或结构体)定义特定的运算行为。运算符重载方法必须是 public 和 static 的,并且包含 operator 关键字。下面是运算符重载的基本语法:

public static 返回类型 operator 运算符(参数列表)

{

// 方法体

}

以下是一个重载+运算符的示例,我们定义了一个Complex类,代表复数。然后重载了+运算符,使其可以用于两个Complex对象的相加操作。

public class Complex

{

public double Real { get; set; }

public double Imaginary { get; set; }

public Complex(double real, double imaginary)

{

Real = real;

Imaginary = imaginary;

}

?

// 重载 + 运算符

public static Complex operator +(Complex c1, Complex c2)

{

return new Complex(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary);

}

}

?

public class Program

{

public static void Main()

{

Complex c1 = new Complex(1.0, 2.0);

Complex c2 = new Complex(3.0, 4.0);

Complex result = c1 + c2;

Console.WriteLine($"Result: {result.Real} + {result.Imaginary}i");

}

}

1.1.10.2. 可重载的运算符

C#中几乎所有的运算符都可以重载,但以下几个运算符除外:

(1) 条件运算符(&&, ||, ?:)

(2) 赋值运算符(=)

1.1.10.3. 运算符重载的限制

(1) 重载运算符必须是public和static的。

(2) 重载运算符必须至少有一个参数是类或结构体类型。

(3) 重载运算符不能更改运算符的优先级和结合性。

Tags:

最近发表
标签列表