Оператор слияния NULL принимает оператор типа:
a = b ?? c;
То, что он говорит: «оцените b; если он имеет ненулевое значение, присвойте его a. В противном случае присвойте значение cа».
Однако в пределах вашего b вы используете пользовательский объект, который может быть нулевым, с объектом раздела, который может быть нулевым, с родительским свойством раздела, которое может быть нулевым, с именемсвойство, которое может быть нулевым.Если вы хотите проверить все это (и, как правило, вам следует), вы можете сделать что-то вроде:
string name = string.Empty;
if (user != null &&
user.Section != null &&
user.Section.ParentSection != null)
{
name = user.Section.ParentSection.Name ?? string.Empty;
}
Как только проверка IF не удастся, она больше не будет проверяться, и поэтому вы не получитеNullReferenceException, если вы предполагаете, что объект присутствует, а затем пытаетесь получить доступ к одному из его свойств.