Как я могу использовать Nullable Operator с оператором Null Conditional?
Старый Путь
int? myFavoriteNumber = 42;
int total = 0;
if (myfavoriteNumber.HasValue)
total += myFavoriteNumber.Value *2;
Новый способ?
int? myFavoriteNumber = 42;
total += myFavoriteNumber?.Value *2; //fails
4 ответа
Оператор нуль-распространения? будет, как говорится, распространять нулевое значение. В случае int?.Value это невозможно, так как тип Value, int, не может быть нулевым (если бы это было возможно, операция стала бы null * 2
что бы это значило?) Таким образом, "Старый путь" все еще является текущим способом сделать это.
Попробуй это:
int? myFavoriteNumber = 42;
total += (myFavoriteNumber??0) *2;
Выражение (myFavoriteNumber?? 0
) возвращает 0 в случае myFavoriteNumber
нулевой.
Я думаю, что вы неправильно поняли использование null
условный оператор. Он используется для короткого замыкания цепочки ifs к null
когда один из шагов дает null
,
Вот так:
userCompanyName = user?.Company?.Name;
Обратите внимание, что userCompanyName
будет содержать null
если user
или же user.Company
является null
, В вашем примере total
не может принять null
так что это больше об использовании?? чем что-либо еще:
total = (myFavoriteNumber ?? 0) * 2;
Попробуй это
int? myFavoriteNumber = 42;
total += (myFavoriteNumber.Value!=null)? myFavoriteNumber.Value*2 : 0;