C#:返回对象的Null条件运算符

时间:2016-06-08 14:26:31

标签: reference operator-keyword

假设我有以下课程:

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”?

谢谢。

1 个答案:

答案 0 :(得分:1)

(。?)用于在执行成员访问之前测试null。如果在访问sayd操作数为空之前检查null,则返回null

??如果操作数不为null,则返回左操作数;如果左操作数为null,则返回右操作数

因此,在第二行检查null失败,(。?)运算符返回null和??运算符返回右操作数。

在第三行中,您尝试访问属性而不检查null,并且您具有空引用异常