Weird operator precedence with ?? (null coalescing operator)

Viewed 3384

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 equivalent of this:

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

Amazingly enough this will run and compile without warnings or incompatible type errors, as will this:

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

And then this results in an unexpected type incompatibility error:

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

As will this simpler example:

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

Can someone explain how this works to me?

2 Answers
Related