C# Null 合并运算符

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);
        }
    }
}
Null Coalescing Operator 1

现在让我们初始化 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。

分类 C#