首页 > 编程笔记 > C#笔记 阅读:14

C#赋值运算符的用法(附带实例)

赋值运算符主要用来为变量等赋值,它是双目运算符。C# 中的赋值运算符分为简单赋值运算符和复合赋值运算符,下面分别进行讲解。

C#简单赋值运算符

简单赋值运算符以符号“=”表示,其功能是将右操作数所含的值赋给左操作数。例如:
int a = 100;    // 该表达式是将100赋值给变量a

C#复合赋值运算符

在程序中对某个对象进行某种操作后,如果再将操作结果重新赋值给该对象,则可以通过下面的代码实现:
int a = 3;
int temp = 0;
temp = a + 2;
a = temp;
上面的代码看起来很烦琐,在 C# 中,上面的代码等价于:
int a = 3;
a += 2;
上面代码中的 += 就是一种复合赋值运算符,复合赋值运算符又称为带运算的赋值运算符,它其实是将赋值运算符与其他运算符合并成一个运算符来使用,从而同时实现两种运算符的效果。

C# 提供了很多复合赋值运算符,其说明及运算规则如下表所示:

表:复合赋值运算符的说明及运算规则
名称 运算符 运算规则 意义
加赋值 += x+=y x=x+y
减赋值 -= x-=y x=x-y
除赋值 /= x/=y x=x/y
乘赋值 *= x*=y x=x*y
模赋值 %= x%=y x=x%y
位与赋值 &= x&=y x=x&y
位或赋值 |= x|=y x=x|y
右移赋值 >>= x>>=y x=x>>y
左移赋值 <<= x<<=y x=x<<y
异或赋值 ^= x^=y x=x^y

C#复合赋值运算符的优势及劣势

使用复合赋值运算符时,虽然“a+=1”与“a=a+1”两者的计算结果是相同的,但是在不同的场景下,两种使用方法都有各自的优势和劣势,下面分别介绍。

1) 低精度类型自增

在 C# 中,整数的默认类型是 int 型,所以下面的代码会报错:
byte a=1;      // 创建byte类型变量a
a=a+1;         // 错误提示:无法将int型转换成byte型
上面的代码中,在没有进行强制类型转换的条件下,a+1 的结果是一个 int 值,无法直接赋给一个 byte 变量。

但是如果使用“+=”实现递增计算,就不会出现这个问题,代码如下:
byte a=1;      // 创建byte类型变量a
a+=1;          // 正确:a的值加1

2) 不规则的多值运算

复合赋值运算符的功能虽然强大,但是有些时候是不推荐使用的,例如下面的情况:
a = (2 + 3 - 4) * 92 / 6;
如果将上面这行代码改成复合赋值运算符实现,就会显得非常烦琐,代码如下:
a += 2;
a += 3;
a -= 4;
a *= 92;
a /= 6;

在 C# 中可以把赋值运算符连在一起使用。如:
x = y = z = 5;
在这个语句中,变量 x、y、z 都得到同样的值 5,但在程序开发中不建议使用这种赋值语法。

相关文章