为什么允许使用关键字";这";在c#6.0中使用空条件运算符(this?)?

为什么允许使用关键字";这";在c#6.0中使用空条件运算符(this?)?,c#,c#-6.0,C#,C# 6.0,在进行重构时,我将表达式中的变量名更改为“this”,并使表达式成为this?.RaiseEvent(eventArg)。它不仅编译得很好,而且没有给我任何警告。所以我有点困惑-有没有任何情况下,这个在C#中可以为空?如果没有,编译器出现这种行为的原因是什么?为什么只为这个添加一个特例?C#编译器跟踪未使用的变量和许多其他东西作为警告,所以我希望像这样明显无用的表达式也会这样。看起来这是答案@MikeZnaet哇,这是我不知道的!它解释了一切。如果你愿意回答,我当然会接受。这是一个“恶意”使用反

在进行重构时,我将表达式中的变量名更改为“
this
”,并使表达式成为
this?.RaiseEvent(eventArg)
。它不仅编译得很好,而且没有给我任何警告。所以我有点困惑-有没有任何情况下,
这个
在C#中可以为空?如果没有,编译器出现这种行为的原因是什么?

为什么只为
这个
添加一个特例?C#编译器跟踪未使用的变量和许多其他东西作为警告,所以我希望像这样明显无用的表达式也会这样。看起来这是答案@MikeZnaet哇,这是我不知道的!它解释了一切。如果你愿意回答,我当然会接受。这是一个“恶意”使用反射造成的问题。在正常情况下,你不会遇到这种情况。有人可能会争辩说,他们可以在那里添加检查,但这些都是非常低级的方法,因此应该由程序员而不是API来完成。