„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Sollten Methoden Null oder leere Sammlungen zurückgeben?

Sollten Methoden Null oder leere Sammlungen zurückgeben?

Veröffentlicht am 2025-01-26
Durchsuche:328

Should Methods Return Null or Empty Collections?

Null oder eine leere Sammlung zurückgeben: Best Practices

Beim Entwerfen einer Methode, die eine Sammlung als Rückgabewerttyp zurückgibt, stellt sich die Frage: Soll sie Null oder eine leere Sammlung zurückgeben? Best Practice empfiehlt dringend, in jedem Fall eine leere Sammlung zurückzugeben.

Warum eine leere Sammlung wählen?

Die Rückgabe von Null ist eine schlechte Praxis, da sie zu unnötiger Codekomplexität und potenziellen Laufzeitfehlern führt. Wenn Sie beispielsweise null für eine Sammlungseigenschaft zurückgeben:

if(myInstance.CollectionProperty != null)
{
  foreach(var item in myInstance.CollectionProperty)
    /* 如果 CollectionProperty 为 null,此代码可能会失败 */
}

Dieser Code kann eine Ausnahme verursachen, wenn myInstance.CollectionProperty tatsächlich null ist. Stattdessen ist es besser, eine leere Sammlung zurückzugeben, um sicherzustellen, dass der obige Code weiterhin fehlerfrei ausgeführt werden kann.

Best Practices für Attribute

Für Eigenschaften, die eine Sammlung zurückgeben, wird empfohlen, die Eigenschaft nur einmal zu initialisieren. Dies kann während des Konstruktors der Klasse erfolgen, die die Eigenschaft enthält:

public List Foos { public get; private set; }

public Bar() { Foos = new List(); }

Mit C# 6 ist eine prägnantere Version verfügbar:

public List Foos { get; } = new List();

Best Practices für Methoden

Bei Methoden, die eine Sammlung zurückgeben, wird eine leere Sammlung zurückgegeben, wenn die tatsächliche Sammlung nicht vorhanden ist. Zu diesem Zweck können Sie die Methode Enumerable.Empty() verwenden:

public IEnumerable GetMyFoos()
{
  return InnerGetFoos() ?? Enumerable.Empty();
}

Dieser Ansatz stellt sicher, dass die Methode auch dann eine leere Sammlung zurückgibt, wenn InnerGetFoos() null zurückgibt, wodurch potenzielle Fehler vermieden werden.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3