在 C# 中,两个问号 (??) 连在一起是什么意思?

csharpserver side programmingprogramming更新于 2025/10/2 12:37:17

它是空合并运算符。如果左侧操作数不为空,则空合并运算符 ?? 返回其左侧操作数的值;否则,它会计算右侧操作数的值并返回其结果。如果左侧操作数的计算结果为非空,则 ?? 运算符不会计算其右侧操作数的值。

可空类型可以表示一个未定义的值,或者来自该类型的域的值。当左侧操作数具有可空类型时,我们可以使用 ?? 运算符返回适当的值。如果我们尝试在不使用 ?? 运算符的情况下将可空值类型赋值给非可空值类型,则会出现错误。运算符,我们将收到编译时错误,如果我们强制转换它,则会引发 InvalidOperationException 异常。

空合并运算符 (??) 运算符 − 的优点如下。

  • 它用于为可空项定义默认值(适用于值类型和引用类型)。

  • 它可以防止运行时引发 InvalidOperationException 异常。

  • 它可以帮助我们删除许多冗余的 &if& 条件。

  • 它适用于引用类型和值类型。

  • 代码变得井井有条,可读性更高。

示例

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

相关文章