Dies bezieht sich speziell auf einige C# -Eigenschaften, die ich neu schreiben möchte.Leistung und Kompilierung des Nullfortpflanzungsoperators
Beispiel für eine der ursprünglichen Eigenschaften:
public double? PartQuantity
{
get
{
if(MaintenanceRequestPart != null)
return MaintenanceRequestPart.ReportedQuantity.HasValue
? (double?)MaintenanceRequestPart.ReportedQuantity.Value
: null;
return null;
}
}
Was dies geändert wird:
public double? PartQuantity => MaintenanceRequestPart?.ReportedQuantity;
Anmerkung 1:MaintenanceRequestPart
kann
Anmerkung 2 null sein:MaintenanceRequestPart.ReportedQuantity
ist ein nullfähiges Doppel
Werden einige Operationen/Verzweigungen/Overhead gespeichert oder hinzugefügt? Ich bin gespannt, was das ist. Der Operator übersetzt sich tatsächlich hinter die Kulissen, sobald er in eine Zwischensprache umgewandelt wurde.
Da 'ReportedQuantity' zu verlieren, ist schon ein Nullable-Doppel, im ursprünglichen Code, warum Sie nicht einfach tun,' if (MaintenanceRequestPart! = Null) return MaintenanceRequestPart.ReportedQuantity; ' – dbc
Aber auch siehe https://ericlippert.com/2012/12/17/performance-rant/. Warum nicht selbst testen? – dbc
Wenn Sie wissen wollen, was die IL für diesen Code sein wird, dann kompilieren Sie es und schauen Sie sich die IL an. Sie brauchen uns nicht, um es für Sie zu kompilieren. – Servy