三皇五帝宫

?? 和 ??= 运算符(C# 参考):驱鬼辟邪符

网上道教符咒法事法术    2022-07-07    138

如果左操作数的值不为null,则null 合并运算符??返回该值;否则,它会计算右操作数并返回其结果驱鬼辟邪符。如果左操作数的计算结果为非null,则??运算符不会计算其右操作数。

C# 8.0 及更高版本中可使用空合并赋值运算符??=,该运算符仅在左侧操作数的求值结果为null时,才将其右侧操作数的值赋值给左操作数驱鬼辟邪符。如果左操作数的计算结果为非null,则??=运算符不会计算其右操作数。

List int numbers = null;

int? a = null;

(numbers ??= newList int).Add( 5);

Console.WriteLine( string.Join( " ",numbers)); // output: 5

numbers.Add(a ??= 0);

Console.WriteLine( string.Join( " ", numbers)); // output: 5 0Console.WriteLine(a); // output: 0

??=运算符的左操作数需要是变量、??=或索引器元素驱鬼辟邪符

在C# 7.3 及更早版本中,??运算符左操作数的类型需要是??或可以为null 的值类型驱鬼辟邪符。从C# 8.0 版本开始,该要求替换为以下内容:??和??=运算符的左操作数的类型需要是可以为null 的值类型。特别是从C# 8.0 开始,可以使用具有无约束类型参数的null 合并运算符:

privatestaticvoidDisplayT(T a, T backup){

Console.WriteLine(a ?? backup);

null 合并运算符是右结合运算符驱鬼辟邪符。也就是说,是窗体的表达式

a ?? b ?? cd??= e ??= f

会像这样求值

a?? (b ?? c)d ??= (e ??= f)

示例

??和??=运算符在以下应用场景中很有用:

在包含null 条件运算符?. 和?[]的表达式中驱鬼辟邪符,当包含null 条件运算的表达式结果为null时,可以使用运算符来提供替代表达式用于求值:

doubleSumNumbers( List double[] setsOfNumbers, intindexOfSetToSum )

returnsetsOfNumbers?[indexOfSetToSum]?.Sum ?? double.NaN;

varsum =SumNumbers( null, 0);Console.WriteLine(sum); // output: NaN

当使用可以为null 值类型并且需要提供基础值类型的值时驱鬼辟邪符,可以使用运算符指定当可以为null 的类型的值为null时要提供的值:

int? a = null; intb = a ?? -1;

Console.WriteLine(b); // output: -1

如果可以为 null 的类型的值为 null 时要使用的值应为基础值类型的默认值,请使用 NullableT.GetValueOrDefault方法驱鬼辟邪符

从 C# 7.0 开始驱鬼辟邪符,可以使用 表达式作为 ?? 运算符的右操作数,以使参数检查代码更简洁:

publicstring Name {

get =name;

set =name = value ?? thrownewArgumentNullException(nameof(value), "Namecannot be null");

前面的示例还演示了如何使用 expression-bodied 成员来定义属性驱鬼辟邪符

从 C# 8.0 开始驱鬼辟邪符,可以使用 ??= 运算符将这样的代码

if(variableis null)

variable = expression;

替换为以下代码:

variable??=expression;

运算符可重载性

运算符??和??=无法进行重载驱鬼辟邪符

本文链接:https://35gh.com/post/22777.html

转载声明:本站发布文章及版权归网上道教,符咒批发,道教符咒,茅山符咒,符咒灵符,手绘符,手绘灵符,道家招财符咒,网上祭奠,网上祭拜,在线许愿网,网上拜财神,代烧香,代烧香祈福,代烧纸钱,招财符咒,婚姻和合符咒,回心转意符咒,桃花符咒,事业符咒,平安符咒,平安健康符咒,求子符咒,怀孕符咒,道教求子咒,求子怀孕符咒,网上道观,线上道观所有,转载本站文章请注明文章来源!

上一篇   下一篇

相关文章