C#中?的7种用法
作者:软泡芙
本文主要介绍了C#里的可空类型修饰符?、三元表达式?:、NULL检查运算符?.、?[ ]、?[]?、空合并运算符??、null合并赋值运算符??=等特殊运算符的用法和语法,感兴趣的可以了解一下

可空类型修饰符?
int? num = null;//表示可空的整型 DateTime? dateTime = null; //表示可空的时间
三元(运算符)表达式?:
表示如果表达式x为true,则返回y,如果x为false,则返回z,是省略if{}else{}的简单形式。
x?y:z
NULL检查运算符?.
如果对象为NULL,则不进行后面的获取成员的运算,直接返回NULL
int? firstX = points?.FirstOrDefault()?.X;
?[ ]
int? first = customers?[0].Orders.Count();
?[]?
params Delegate?[] delegates -它是可为空的数组 Delegate
params Delegate?[]? delegates -整个数组可以为空
public static Delegate? Combine(params Delegate?[]? delegates)
{
if (delegates == null || delegates.Length == 0)
return null;
Delegate? d = delegates[0];
for (int i = 1; i < delegates.Length; i++)
d = Combine(d, delegates[i]);
return d;
}
空合并运算符??
用于定义引用类型和可空类型的默认值。如果此运算符的左操作数不为Null,则此操作符将返回左操作数,否则返回右操作数。
var c = a??b //当a不为null时返回a,为null时返回b
null 合并赋值运算符??=
仅当左操作数计算为 null 时,才能使用运算符 ??= 将其右操作数的值分配给左操作数。
List<int> numbers = null;
int? i = null;
numbers ??= new List<int>();
numbers.Add(i ??= 17);
numbers.Add(i ??= 20);
Console.WriteLine(string.Join(" ", numbers)); // output: 17 17
Console.WriteLine(i); // output: 17
到此这篇关于C#中?的7种用法的文章就介绍到这了,更多相关C# ?用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
