为什么C#空条件运算符不使用重载相等运算符?

时间:2019-08-02 13:50:07

标签: c#

C#6.0引入了新的酷Null条件运算符

    obj?.method();

检查obj是否为null,如果为null,则停止进一步执行语句。因此,代码与手动执行的代码相同

    if (!Object.ReferenceEquals(obj, null))
        obj.method();

但是(至少对我来说)更直观

    if (obj != null)
        obj.method();

区别在于,运算符==可以重载,在第二种情况下使用它,在不使用空条件运算符重载的运算符的情况下,它始终是空引用相等。

他们采用这种方式设计它是否有特定原因?对我来说,这似乎违反直觉,而且不一致。如果更自然地使用==运算符,我不会得到by design的解释。甚至official docs似乎也没有说它是引用相等。

operation to its operand only if that operand evaluates to non-null.

0 个答案:

没有答案