C#------新特性之??、?、??= 使用


public static void Main() { List<int>? numbers = null; int? a = null; Console.WriteLine((numbers is null)); //true // 如果numbers为空,则初始化numbers,同时添加一个5到numbers列表中 (numbers ??= new List<int>()).Add(5); Console.WriteLine(string.Join(" ", numbers)); // output: 5 Console.WriteLine((numbers is null)); // false Console.WriteLine((a is null)); // true Console.WriteLine((a ?? 3)); // 3,若a不为空则返回a的值,否则返回3;此处a为空 // 如果a为空,则赋值0;同时将a添加到numbers列表中 numbers.Add(a ??= 0); Console.WriteLine((a is null)); // false Console.WriteLine(string.Join(" ", numbers)); // output: 5 0 Console.WriteLine(a); // output: 0 }

 

public string Name
{
    get => name;
    set => name = value ?? throw new ArgumentNullException(nameof(value), "Name cannot be null");    //若Name为空,将抛出异常
}

 

if (variable is null)
{
variable = expression;
}

和variable ??= expression;    是等效的

 

 

操作符??运算:

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

如果左操作数的计算结果为非 null,则 ?? 运算符不会计算其右操作数。

 

操作符??=运算:

仅当左操作数的计算结果为 null 时,Null 合并赋值运算符 ??= 才会将其右操作数的值赋值给其左操作数。 如果左操作数的计算结果为非 null,则 ??= 运算符不会计算其右操作数。

posted @ 2024-08-23 16:33  echo-efun  阅读(29)  评论(0)    收藏  举报