Мне это кажется ошибкой ...
Я принимаю, что автоматические свойства определены так:
public decimal? Total { get; set; }
Будет нулевым при первом доступе к ним. Они не были инициализированы, поэтому, конечно, они нулевые.
Но даже после установки их значения через + = это десятичное число? все еще остается нулевым. Итак, после:
Total += 8;
Итого по-прежнему равно нулю. Как это может быть правильно? Я понимаю, что он делает (ноль + 8), но кажется странным, что он не понимает, что это означает, что он должен быть установлен на 8 ...
Дополнения:
В своем вопросе я поставил точку «ноль + 8» - но обратите внимание, что она работает со строками. Таким образом, он делает null + "привет" просто отлично и возвращает "привет". Поэтому, за кулисами, он инициализирует строку в строковый объект со значением «привет». Поведение должно быть таким же для других типов, IMO. Это может быть потому, что строка может принимать значение NULL в качестве значения, но, тем не менее, строка NULL не является инициализированным объектом, верно?
Возможно, это просто потому, что строка не может быть обнуляемой ...