Operador estranho precedência com ?? (operador coalescente nulo)
Recentemente, tive um bug estranho no qual concatenava uma string com umint?
e adicionando outra string depois disso.
Meu código era basicamente o equivalente a isso:
int? x=10;
string s = "foo" + x ?? 0 + "bar";
Surpreendentemente, isso será executado e compilado sem avisos ou erros de tipo incompatíveis, assim como:
int? x=10;
string s = "foo" + x ?? "0" + "bar";
E isso resulta em um erro inesperado de incompatibilidade de tipo:
int? x=10;
string s = "foo" + x ?? 0 + 12;
Como será este exemplo mais simples:
int? x=10;
string s = "foo" + x ?? 0;
Alguém pode explicar como isso funciona para mim?