Recently I had a weird bug where I was concatenating a string with an int?
and then adding another string after that.
My code was basically the equivale
The null coalescing operator has very low precedence so your code is being interpreted as:
int? x = 10;
string s = ("foo" + x) ?? (0 + "bar");
In this example both expressions are strings so it compiles, but doesn't do what you want. In your next example the left side of the ??
operator is a string, but the right hand side is an integer so it doesn't compile:
int? x = 10;
string s = ("foo" + x) ?? (0 + 12);
// Error: Operator '??' cannot be applied to operands of type 'string' and 'int'
The solution of course is to add parentheses:
int? x = 10;
string s = "foo" + (x ?? 0) + "bar";