假设我有以下课程:
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?”的返回类型是什么? ?
为什么我要打印“Ohoh”?
谢谢。
答案 0 :(得分:1)
(。?)用于在执行成员访问之前测试null。如果在访问sayd操作数为空之前检查null,则返回null
??如果操作数不为null,则返回左操作数;如果左操作数为null,则返回右操作数
因此,在第二行检查null失败,(。?)运算符返回null和??运算符返回右操作数。
在第三行中,您尝试访问属性而不检查null,并且您具有空引用异常