Без сомнения, есть другие, возможно, лучшие способы сделать это, но я пытаюсь понять, что здесь происходит.
В приведенном ниже примере 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 + =.
в + = Оператор (C # Reference) , я вижу, что x + = y эквивалентно x = x + y , а в Используя обнуляемые типы (Руководство по программированию на C +) , я вижу, что
Эти операторы [бинарный оператор] выдают нулевое значение, если один или оба операнда равны нулю
Так что же происходит?foo + = bar становится foo = foo + bar, а поскольку foo равно нулю, foo + bar равно нулю?