Frage

dass für öffentlichen APIs zu erwähnen, sollten wir immer wieder zurückkehren ICollection (oder IEnumerable) anstelle von List

Ich habe ein paar Blog-Post zu lesen. Was ist der wirkliche Vorteil ICollection anstelle einer Liste der Rückkehr?

Danke!

Duplizieren: Was ist der Unterschied zwischen List (T) und Collection (T)?

War es hilfreich?

Lösung

Ein Enumerator gibt nur eine Einheit zu einer Zeit, wie Sie über sie iterieren. Dies ist, weil es ein yield return verwendet. Eine Sammlung, auf der anderen Seite, gibt die gesamte Liste, zu verlangen, dass die Liste vollständig im Speicher abgelegt werden.

Die kurze Antwort ist, dass Aufzählungen sind leichter und effizienter zu gestalten.

Andere Tipps

Es gibt Ihnen mehr Freiheit, wenn die zugrunde liegende Datenstruktur auswählen.

Eine Liste geht davon aus, dass die Umsetzung Indizierung unterstützt, aber ICollection macht keine solche Annahme.

Das bedeutet, wenn Sie feststellen, dass ein Set eine bessere Leistung bieten könnte, da Bestellung irrelevant ist, dann bist du frei, Ihren Ansatz zu ändern, ohne Kunden zu beeinflussen.

Es ist grundlegende Einkapselung.

Ich würde denken, IList wäre besser geeignet, aber ...

ICollection ist nur eine Schnittstelle, während Liste eine spezifische Implementierung dieser Schnittstelle ist. Was passiert, wenn Sie später wollte einen anderen Behälter neben einer Liste verwenden? Wenn Sie öffentlich eine ICollection-Schnittstelle aussetzen, können Sie Ihren inneren Behälter auf etwas anderen später ändern -. Solange die neuen Container auch den ICollection-Schnittstelle implementiert

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top