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
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.
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