В C# при наличии объектов, допускающих значение NULL, таких как Decimal?, Int? и т. д. При выполнении проверок на значение NULL, но с ранней остановкой.
Компилятор не отслеживает значение NULL такого объекта (в данном случае prevMaxSpeed) выходит за рамки оператора if. Есть ли лучший способ сделать это?
Это всего лишь небольшой упрощенный фрагмент более сложного кода, я не хочу использовать вложенные операторы if, чтобы исправить это, из-за проблемы с читабельностью.
Я знаю, что могу просто применить это, но чувствую, что это излишне.
foreach (var something in somethings)
{
var prevMaxSpeed = something.FirstOrDefault(x => x != null)?.speed;
// early stopping
if (!prevMaxSpeed.HasValue && !prevMaxSpeed.IsDefaultValue())
{
HandleMaxSpeedNoValue();
continue;
}
sp.SP_Characteristics.StaticSpeedProfile.First().StaticSpeedProfileStart = new SSP_ComplexType()
{
SSP_Speed = prevMaxSpeed, // "Cannot implicitly convert type 'decimal?' to 'decimal'. An explicit conversion exists (are you missing a cast?)"
SSP_SpeedSpecified = true,
};
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ping-issue
Типы, допускающие значение NULL, в C# и проблема ранней остановки ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение