为什么在可为空的类型上使用+ =会导致FORWARD_NULL缺陷

时间:2019-03-08 15:09:15

标签: c# nullable static-analysis coverity

毫无疑问,还有其他也许更好的方法可以做到这一点,但是我试图理解这里发生的事情。

在下面的示例中,coverity在第四行报告了FORWARD_NULL缺陷。

double? foo = null;
double bar = 1.23;
foo += bar;
System.Windows.Point point = new System.Windows.Point(foo,bar);  

它报告:

  

assign_zero:分配:foo = null。

在foo + =条线上。

+= Operator (C# Reference)中,我看到 x + = y 等效于 x = x + y ,而在Using nullable types (C+ Programming Guide)中,我看到

  

这些运算符 [二进制运算符] 如果一个或两个操作数是   空

那是怎么回事? foo + = bar变为foo = foo + bar,并且由于foo为空,因此foo + bar为空吗?

1 个答案:

答案 0 :(得分:5)

  

那是怎么回事? foo + = bar变为foo = foo + bar和   因为foo为空,所以foo + bar为空?

是的