Странный приоритет оператора с ?? (нулевой оператор объединения)
Недавно у меня была странная ошибка, когда я связывал строку с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;
Может кто-нибудь объяснить, как это работает для меня?