2010-07-12 4 views

Antwort

37

Generell sollten Sie versuchen, und die am wenigsten spezifische Art verwenden, die Ihren Zweck geeignet ist. IEnumerable ist weniger spezifisch als IList (IList implementiert IEnumerable). Wenn Sie also nicht etwas von IList (wie .Count, wie Sie vorschlagen, oder vielleicht hinzufügen, löschen, usw.) möchten, würde ich IEnumerable verwenden.

Einer der netten Ergänzungen, die Sie von IEnumerable erhalten, besteht darin, dass Sie Iteratormethoden schreiben können, um diesen Typ zurückzugeben (siehe "yield return" und Iteratormethoden, wenn Sie nicht damit vertraut sind). Dadurch können Sie sehr speichereffiziente "Pipelines" für Ihre Schleifen schreiben.

+2

Ich stimme der Verwendung des am wenigsten abgeleiteten Typs zu. ICollection <> ist ausreichend für das Hinzufügen/Entfernen. –

+0

@Mark H - guter Punkt - für die meisten Operationen zum Hinzufügen/Entfernen ist sogar IList unnötig spezifisch. –

+0

IList * implementiert * IEnumerable ?! –

3

Sie sollten IList verwenden, wenn Sie den Zugriff durch den Index zu Ihrer Sammlung benötigen, hinzufügen und Elemente löschen usw. und IEnumerable, wenn Sie etwas über Ihre Sammlung aufzählen müssen.

Eine sehr einfache Antwort, ich kann es erweitern, wenn Sie Ihr Szenario beschreiben.