c# 运算符 ? ??
static void Main(string[] args) { //空合并行运算?? /*?? 提供了一种快捷方式,可以在处理可空类型和引用类型时表示null值的可能性,这个运算符放在 两个操作数之间,第一个操作数必须是一个可空类型或者引用类型,第二个操作数必须与第一个操作数 类型相同,或者可以隐式转换为第一个操作数的类型 1、如果第一个操作数不是null,整个表达式就等于第一个操作数的值; 2、如果第一个操作数是null, 整个表达式就等于第二个操作数的值 */ int? a = null; int b; b = a ?? 10; a = 3; Console.WriteLine(b); // 10 b = a ?? 10; Console.WriteLine(b); //3 //空值传播运算符 object?.method; /* * 生产环境中代码会检查验证变量空值条件,访问变量时需要检查判断是否为null,否则会抛出NullReferenceException, 但是有时很容易忘记这样的检查,可以利用空值传播的特性来简化代码 */ int? d = 2; Console.WriteLine(d?.ToString().GetType().Name); // String d = null; Console.WriteLine(d?.ToString().GetType().Name); // null //当空值传播类型访问int类型的属性时,不能将结果直接分配给int,因为结果可能为null,可以将结果分配为可空的int? //当然我们也可以结合空合并行运算符的特性??来实现 Person p = new Person(); int e = p?.Age ?? 666; Console.WriteLine(e); //123 p = null; e = p?.Age ?? 666; Console.WriteLine(e); //666 //当然也可以将这种特性用于数组的可空判断 int[] arr = null; Console.WriteLine(arr?[0]); //null arr = new[] {1, 2, 3}; Console.WriteLine(arr?[0]); //1 Console.ReadKey();