它是null 运算符。空合并运算符?? 如果不为空,则返回其左操作数的值;否则,它将评估右侧操作数并返回其结果。?? 如果左侧操作数的计算结果为非null,则运算符不会评估其右侧操作数。
可为空的类型可以表示一个不确定的值,也可以来自该类型的域。我们可以使用?? 当左操作数具有可为空的类型时,运算符将返回适当的值。如果我们尝试在不使用??的情况下将可为空的值类型分配给不可为空的值类型 运算符,我们将得到一个编译时错误,如果我们强制转换它,将抛出InvalidOperationException异常。
以下是Null-Coalescing运算符(??)运算符的优点-
它用于为可为空的项定义默认值(对于值类型和引用类型)。
它防止运行时InvalidOperationException异常。
它有助于我们消除许多多余的“如果”条件。
它适用于引用类型和值类型。
代码变得井井有条,可读性强。
using System; namespace MyApplication{ class Program{ static void Main(string[] args){ int? value1 = null; int value2 = value1 ?? 99; Console.WriteLine("Value2: " + value2); string testString = "Null Coalescing"; string resultString = testString ?? "Original string is null"; Console.WriteLine("The value of result message is: " + resultString); } } }
输出结果
上面示例的输出如下。
Value2: 99 The value of result message is: Null Coalescing