运算符之间是什么?和?? =在C#8.0中?遵循msdn文档:
运算符?? 返回其左侧操作数的值(如果不是) 空值;否则,它将评估右侧操作数并返回其 结果。
运算符?? = 将值分配给其右侧操作数 仅当左侧操作数的值为null时,左侧操作数。
但是两个示例的结果都相同
int? a = null;
int b = a ??= -1;
Console.WriteLine(b); // output: -1
int? a = null;
int b = a ?? -1;
Console.WriteLine(b); // output: -1
答案 0 :(得分:1)
第一个示例int b = a ??= -1;
实际上是将-1
分配给变量a
,然后将a
的值分配给b
。 ??=
运算符类似于+=
,-=
等,因此您可以内联使用它,例如:
int? a = null;
a ??= -1; // a == -1
int? b = 123;
b ??= -1; // b == 123
在第一个示例中,如果您希望??=
和a
都取b
且-1
为a
时,实际上只需要null
int b = a ?? -1;
。
如果a
不为空,则第二个示例b
仅将a
分配给b
,否则-1
变成{{1}}。