C# Null 合并运算符 ?? 是一个二元运算符,可用于可空类型和引用类型。Null 合并运算符的语法如下:
a ?? b
如果 a 是一个非空值,则表达式的值为 a,否则为 b。让我们看一个例子来理解 Null 合并运算符的用法。
C# Null 合并运算符示例
TicketsAvailable 是一个不可为空的 int 变量,而 TicketsonSale 是一个可为空的 int 变量,其值为 Null。在 if 条件中,我们正在检查 TicketsonSale 是否为 null。
在这里,我们将 TicketsonSale 赋值为 null,所以结果显然是:
TicketsAvailable = 0
不使用 Null 合并运算符的代码。
using System;
namespace CSharp_Tutorial
{
class Without_NullCoalesce
{
static void Main()
{
int TicketsAvailable;
int? TicketsonSale = null;
if (TicketsonSale == null)
{
TicketsAvailable = 0;
}
else
{
TicketsAvailable = (int)TicketsonSale;
}
Console.WriteLine("TicketsAvailable = {0}", TicketsAvailable);
}
}
}

现在让我们初始化 TicketsonSale = 100,这意味着 else 部分将被执行。
我们将 TicketsonSale 类型转换为不可为空的 int 变量的原因是:
TicketsonSale 是一个可为空的 int 变量,我们试图将可为空的 int 变量的值存储到一个不可为空的 int 变量中,即 TicketsAvailable。
这会产生一个错误。因此,这是一个将可为空的 int 类型的结果转换为不可为空的 int 类型,然后将其存储在不可为空的 int 变量 TicketsAvailable 中的过程。
现在使用 Null 合并运算符(??),我们可以将 if 语句部分缩减为一行代码,即:
TicketsAvailable = TicketsonSale ?? 0;
这一行 C# 代码表示,如果 ‘TicketsonSale’ 为 null,则返回 0。如果它不为 null,则返回 TicketsAvailable 中的值,在本例中返回 100。
使用 Null 合并运算符的 C# 代码
using System;
namespace CSharp_Tutorial
{
class Null_Coalesing
{
static void Main()
{
int TicketsAvailable;
int? TicketsonSale = 100;
//Using Coalesce operator ??
TicketsAvailable = TicketsonSale ?? 0;
Console.WriteLine("TicketsAvailable = {0}", TicketsAvailable);
}
}
}
TicketsAvailable= 100
TicketsAvailable= 100,因为 TicketsonSale = 100,即不为空
如果 TicketsonSale=Null,那么 TicketsAvailable 将等于 0。