代码之家  ›  专栏  ›  技术社区  ›  Michael J.

为什么对可为空类型使用“+”=会导致前向\u空缺陷

  •  2
  • Michael J.  · 技术社区  · 5 年前

    毫无疑问,还有其他更好的方法可以做到,但我正在努力了解这里发生了什么。

    在下面的例子中,coverity在第四行报告一个forward_null缺陷。

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

    报告:

    赋值:赋值: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 回复  |  直到 5 年前
        1
  •  5
  •   spodger    5 年前

    那是怎么回事?foo+=bar变成foo=foo+bar 既然foo为空,foo+bar为空?

    对。