This article has been localized into Russian by the community.
Оператор объединения NULL
Оператор ?? также называется "объединяющим нулем оператором", так как он позволяет проверить наличие нулевого значения и назначить резервное значение в одной строке кода. Это может показаться тривиальным без этого оператора, но рассмотрим следующий пример:
string userSuppliedName = null;
if (userSuppliedName == null)
Console.WriteLine("Hello, Anonymous!");
else
Console.WriteLine("Hello," + userSuppliedName);
Вы должны думать о переменной userSuppliedName как о чем - то, что исходит от пользователя, например, из диалогового окна или файла данных-то, что может привести к значению NULL. Мы должны иметь дело с этим, проверяя значение перед его использованием, в этом случае для отображения имени пользователю.
В предыдущем примере мы используем классический подход if-else, но с объединяющим нулевым оператором это можно сделать гораздо короче, одной строкой:
Console.WriteLine("Hello, " + (userSuppliedName ?? "Anonymous"));
В одном операторе мы просим интерпретатор использовать переменную userSuppliedName, если она имеет значение – если нет, мы предоставляем резервное значение, в данном случае имя"Anonymous". Коротко и просто!
Резюме
Как и со всем "синтаксическим сахаром", подобно оператору объединения нулей, это всегда компромисс между краткостью и удобочитаемостью кода. Некоторые считают, что эти операторы затрудняют чтение и навигацию по коду, в то время как другим нравится, насколько он короткий и простой. В конце концов, все зависит от вас!