Обнуляемые типы и проблема ранней остановкиC#

Место общения программистов C#
Ответить
Anonymous
 Обнуляемые типы и проблема ранней остановки

Сообщение Anonymous »

В 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»