Why does LastName not show in C# string concat operator below

I've got code like the following where adding the ?? operator causes last to disappear.

Expected Result: was that if first was null then first would be replaced by "" and that "" would be concatinated with last giving just last as the result.

Actual Result: What happened was the result I got was just first.

var first = "Joe";
var last = "Smith"
var str1 = first + last; // gives "JoeSmith"
var str2 = first ?? "" + last // gives "Joe"
Jon Skeet
people
quotationmark

It's a matter of precedence. + binds more tightly than ??, so your code is effectively:

var str2 = first ?? ("" + last)

It sounds like you probably meant:

var str2 = (first ?? "") + last

But there's no point, given that string concatenation with null is equivalent to string concatenation with an empty string - so just use first + last as you already have with str1.

people

See more on this question at Stackoverflow