一、可空类型修饰符< ? >
引用类型能用空引用来表示一个表示一个不存在的值,但是值类型不能。例如:
-
string str = null;
-
int i = null;//编译报错
为了使值类型也能使用可空类型,就可以用 " ? "来表示,表现形式为"T?"。例如:
-
int i? //表示可空的整型
-
DateTime time? //表示可空的时间
二、空合并运算符< ?? >
用于定义引用类型和可空类型的默认值。如果此运算符的左操作数不为Null,则此操作符将返回左操作数,否则返回右操作数。
var c = a??b //当a不为null时返回a,为null时返回b
三、< ?. >
不为null时执行后面的操作。例如:
-
Person.Name?.Person.Code
-
Person.Name = Person == null ? null : Person.Code //两段代码等效
四、< ??= >
C# 8.0 引入了 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
为了加深印象,也为方便查找,也避免原来博主 删除,所以复制于此,