Помимо того, что вы хотели бы , чтобы иметь приоритет, что это в соответствии с ECMA, что это в соответствии со спецификацией MS и что на самом деле делает csc, у меня есть один совет:
Не делай этого .
Я думаю, что намного яснее написать:
string c = (a ?? "") + (b ?? "");
В качестве альтернативы, учитывая, что null в конкатенации строк в конечном итоге просто становится пустой строкой, просто напишите:
string c = a + b;
РЕДАКТИРОВАТЬ: Относительно документированного приоритета, как в C # 3.0 spec (документ Word), так и в ECMA-334 , сложение связывает сильнее, чем ??, что связывает сильнее, чем назначение. Ссылка MSDN, приведенная в другом ответе, неверна и причудлива, IMO. На странице, сделанной в июле 2008 года, показано изменение, которое переместило условный оператор - но, по-видимому, неправильно!