Operación extraña precedencia con ?? (operador de fusión nulo)
Recientemente tuve un error extraño en el que estaba concatenando una cadena con unint?
y luego agregando otra cadena después de eso.
Mi código era básicamente el equivalente de esto:
int? x=10;
string s = "foo" + x ?? 0 + "bar";
Sorprendentemente, esto se ejecutará y compilará sin advertencias o errores de tipo incompatibles, como esto:
int? x=10;
string s = "foo" + x ?? "0" + "bar";
Y luego esto resulta en un error de incompatibilidad de tipo inesperado:
int? x=10;
string s = "foo" + x ?? 0 + 12;
Como será este ejemplo más simple:
int? x=10;
string s = "foo" + x ?? 0;
¿Alguien puede explicarme cómo funciona esto?