这两个问号(?)在C#中是什么意思?

它是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