C#:对象的 Null 条件运算符的 Return
C# : Return of Null-Conditional Operator for Objects
假设我有以下 class :
class Class1
{
public string MyProp { get; set; }
}
那么,让我们来做个小测试:
Class1 myClass1 = null;
Console.WriteLine(myClass1?.MyProp ?? "Ohoh"); // Print "Ohoh"
Console.WriteLine(myClass1.MyProp ?? "Ohoh"); // Null Exception
"myClass1?." 的 return 的类型是什么?
为什么我打印了 "Ohoh"?
谢谢。
(.?) 用于在执行成员访问之前测试空值。它 returns null 如果在访问之前检查 null 说操作数为 null
??运算符 returns 如果左操作数不为空,则为右操作数;如果左操作数为空,则为右操作数
因此,在第二行检查 null 失败,(.?) operator returns null 和 ??运算符 returns 右操作数。
在第三行中,您尝试访问 属性 而不检查 null,并且出现空引用异常
假设我有以下 class :
class Class1
{
public string MyProp { get; set; }
}
那么,让我们来做个小测试:
Class1 myClass1 = null;
Console.WriteLine(myClass1?.MyProp ?? "Ohoh"); // Print "Ohoh"
Console.WriteLine(myClass1.MyProp ?? "Ohoh"); // Null Exception
"myClass1?." 的 return 的类型是什么?
为什么我打印了 "Ohoh"?
谢谢。
(.?) 用于在执行成员访问之前测试空值。它 returns null 如果在访问之前检查 null 说操作数为 null
??运算符 returns 如果左操作数不为空,则为右操作数;如果左操作数为空,则为右操作数
因此,在第二行检查 null 失败,(.?) operator returns null 和 ??运算符 returns 右操作数。
在第三行中,您尝试访问 属性 而不检查 null,并且出现空引用异常