// 基本赋值
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)