目 录CONTENT

文章目录

CSharp(九)赋值运算符

CSharp(九)赋值运算符

基本赋值运算符

运算符 示例 说明
= 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%=5 x=x%=5 将右侧值取模左侧变量的值
&= x&=5 x=x&= 将右侧值与左侧变量的值进行按位与操作

空合并赋值预算符

运算符 示例 说明
??= x??=5 仅当 xnull时,将右侧值赋值给 x

代码示例

// 基本赋值
int a = 10;

// 复合赋值
a += 5;   // a = 15
a -= 3;   // a = 12
a *= 2;   // a = 24
a /= 4;   // a = 6
a %= 4;   // a = 2

// 空合并赋值
string? name = null;
name ??= "默认值";  // name = "默认值"
name ??= "新值";    // name 仍为 "默认值"(因为不为 null)

// 位运算复合赋值
int flags = 0b_0000_1010;  // 10
flags |= 0b_0000_0100;     // 14 (0b_0000_1110)
flags &= 0b_0000_1100;     // 12 (0b_0000_1100)
flags ^= 0b_0000_1111;     // 3  (0b_0000_0011)

5 关键特性

  • 右结合性 : a = b = c = 5 等价于 a = (b = (c = 5)) ,最终 a 、 b 、 c 都为 5
  • 类型转换: 复合赋值运算符会自动执行类型转换,如 byte b = 10; b += 5; 合法(但 b = b + 5 需要显式转换)
  • 表达式值:赋值表达式本身有值,即被赋的值,因此可以链式使用: if ((x = GetValue()) > 0)
0
博主关闭了当前页面的评论