这里说明两个运算符:
可空类型修饰符(?):
官方叫做null-conditional Operators。
引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。为了使值类型也可为空,可空类型出现了,可空类型使用可空类型修饰符?来表示。表现形式为T?,其实T?等价于Nullable<T>。
空合并运算符(??):
官方叫做null-coalescing operator。
用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
A ?? B表示如果A为null则返回B,否则返回A。
看一个示例:
using System;
namespace Test
{
public class Program
{
public static void Main(string[] argc)
{
int? x = null; // Nullable<int> x = null;
int? y = x ?? 10; // x == null ? 10 : x
string str = null;
int? z = str?.Length; // str == null ? null : str.Length
Console.WriteLine("x = {0}", x);
Console.WriteLine("y = {0}", y);
Console.WriteLine("z = {0}", z);
}
}
}
输出:
x =
y = 10
z =