Странный приоритет оператора с ?? (нулевой оператор объединения)

Недавно у меня была странная ошибка, когда я связывал строку сint? а затем добавив еще одну строку после этого.

Мой код был в основном эквивалент этого:

int? x=10;
string s = "foo" + x ?? 0 + "bar";

Удивительно, но это будет выполняться и компилироваться без предупреждений или несовместимых ошибок типов, как это будет:

int? x=10;
string s = "foo" + x ?? "0" + "bar";

И тогда это приводит к неожиданной ошибке несовместимости типов:

int? x=10;
string s = "foo" + x ?? 0 + 12;

Как будет этот более простой пример:

int? x=10;
string s = "foo" + x ?? 0;

Может кто-нибудь объяснить, как это работает для меня?

Ответы на вопрос(2)

Ваш ответ на вопрос