null vs. leere Sammlungen: Best Practices for Method Returns
Wenn Methoden entwerfen, die Sammlungen zurückgeben, wirkt sich die Auswahl zwischen der Rückgabe null
oder einer leeren Sammlung erheblich auf die Code -Klarheit und Robustheit aus. Dieser Artikel setzt sich dafür ein
Warum leere Sammlungen bevorzugt
Rückgabe einer leeren Sammlung vermeidet das Potenzial für Fehler. Betrachten Sie dieses Szenario: NullReferenceException
<code class="language-csharp">if (myInstance.CollectionProperty != null) { foreach (var item in myInstance.CollectionProperty) // Process items }</code>
CollectionProperty
zurückgibt, wenn keine Ergebnisse vorliegen, ist die null
-Prüfung obligatorisch und fügt Komplexität hinzu. Eine leere Sammlung beseitigt diese Prüfung und vereinfacht den Code: if
<code class="language-csharp">foreach (var item in myInstance.CollectionProperty) // Process items (no null check needed)</code>
Nullprüfungen und Ausnahmebehandlung beseitigen
regelmäßig leere Sammlungen reduzieren die Notwendigkeit von Nullüberprüfungen in Ihrer Codebasis. Dies führt zu sauberer, wartbarerer Code und verringert das Risiko, potenzielle Szenarien zu übersehen. NullReferenceException
Eigenschaft Initialisierung Best Practices
Initialisieren Sie sie für Eigenschaften, die Sammlungen zurückgeben, diese während der Objekterstellung, um Nullreferenzen zu verhindern. Dies wird am besten mit dem folgenden Muster erreicht:
<code class="language-csharp">public List<Foo> Foos { get; private set; } = new List<Foo>();</code>
Methodenrückgabewerte: Der richtige Ansatz
Methoden zur Rückgabe von Aufzählung sollten immer eine leere aufzählbare anstelle von zurückgeben. Dies kann elegant mit dem Null-Koalescing-Operator implementiert werden: null
<code class="language-csharp">public IEnumerable<Foo> GetMyFoos() { return InnerGetFoos() ?? Enumerable.Empty<Foo>(); }</code>
Leistungsüberlegungen
bietet einen Leistungsvorteil gegenüber dem Erstellen neuer leerer Sammlungen jedes Mal. Es liefert eine statische, zwischengespeicherte Instanz, wobei die Objektzuweisung Overhead minimiert wird. Enumerable.Empty<T>()
Das obige ist der detaillierte Inhalt vonSollte ich Null oder eine leere Sammlung von meiner Methode zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!