У меня есть метод
int? Foo(int? a, int? b)
{
return a ?? 0 + b ?? 0;
}
Я был удивлен, что результат Foo(12, 4)
равен 12, хотя я ожидал 16.
Я знаю, что нуль-слияние очищает тип от nullabilty , Итак, я подумал, что, возможно, обнуляемые типы не связаны со структурами. Но выражение (int?) 12 + (int) 4
возвращает ожидаемое 16.
Похоже, что только выражение с объединением ведет себя неочевидно: (int?) 12 ?? 0 + (int) 4
дает 12.
Почему каждый из приведенных выше примеров не возвращает 16?