Nullable-Typen und Problem mit dem frühen Stoppen
Posted: 16 Jan 2025, 12:04
In C#, wenn NULL-fähige Objekte wie Decimal?, Int? usw. vorhanden sind. Während NULL-Prüfungen durchgeführt werden, aber mit vorzeitigem Stoppen.
Der Compiler verfolgt nicht die NULL-Zulässigkeit eines solchen Objekts (in diesem Fall prevMaxSpeed) über den Rahmen der if-Anweisung hinaus. Gibt es eine bessere Möglichkeit, dies zu tun?
Dies ist nur ein kleiner vereinfachter Ausschnitt eines komplexeren Codes, weshalb ich nicht bereit bin, verschachtelte if-Anweisungen zu verwenden, um das Problem zu beheben Probleme mit der Lesbarkeit.
Ich weiß, dass ich es einfach umsetzen kann, aber ich habe das Gefühl, dass das überflüssig ist.
Der Compiler verfolgt nicht die NULL-Zulässigkeit eines solchen Objekts (in diesem Fall prevMaxSpeed) über den Rahmen der if-Anweisung hinaus. Gibt es eine bessere Möglichkeit, dies zu tun?
Dies ist nur ein kleiner vereinfachter Ausschnitt eines komplexeren Codes, weshalb ich nicht bereit bin, verschachtelte if-Anweisungen zu verwenden, um das Problem zu beheben Probleme mit der Lesbarkeit.
Ich weiß, dass ich es einfach umsetzen kann, aber ich habe das Gefühl, dass das überflüssig ist.
Code: Select all
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,
};
}