Как я могу использовать новые функции collasce, чтобы превратить эти 2 состояния в 1 строку?

#c#

#c#

Вопрос:

Используя новые функции C # для нулевых проверок, могу ли я сократить эти 2 строки в одну и при этом обеспечить безопасность этого? т.е. нет нулевых ошибок

  var carTypes = @Model.CarSubTypes.FirstOrDefault(x => x.LookupId == item.SubType);
 var carTypeName = carTypes!= null ? carTypes.Name : "";
 

Ответ №1:

Вы должны уметь писать:

 var carTypeName = @Model.CarSubTypes.FirstOrDefault(x => x.LookupId == item.SubType)?.Name
                  ?? "";
 

?. Оператор проверяет, является ли левый операнд null : если это не так, он вычисляет Name , иначе он останавливает вычисление выражения, и оператор ?? позволяет вам определить значение, используемое для присваивания.

Комментарии:

1.обратите внимание, что это не совсем одно и то же; если carTypes не равно нулю, а .Name равно нулю, то исходный код будет выдавать null , где-как ваш код будет производить "" . Что, вероятно, лучше, но: это не то же самое

2. .Name не будет null, но если это добавит еще один уровень безопасности, я приму это