#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, но если это добавит еще один уровень безопасности, я приму это