it-swarm.com.de

Praktischer Unterschied zwischen List und IEnumerable

Durch das Lesen ähnlicher Beiträge habe ich gelernt, dass eine Liste eine Art von IEnumerable ist. Aber ich frage mich wirklich, was der praktische Unterschied zwischen diesen beiden tatsächlich ist.

An jemanden, der immer eine Liste verwendet und nie IEnumerable verwendet hat:

  • Was ist der praktische Unterschied zwischen den beiden?
  • In welchen Szenarien ist eines von ihnen besser als das andere?

Hier ist ein praktisches Beispiel: Wir wollen vier Zeichenfolgen speichern, alphabetisch sortieren, sie an eine andere Funktion übergeben und dem Benutzer dann das Ergebnis anzeigen. Was würden wir verwenden und warum?

Hoffentlich kann jemand das für mich klären oder mich in die richtige Richtung weisen. Danke im Voraus!

58
Robin

Ein wichtiger Unterschied zwischen IEnumerable und List (neben einer Schnittstelle und einer konkreten Klasse) besteht darin, dass IEnumerable schreibgeschützt ist und List nicht.

Wenn Sie also permanente Änderungen an Ihrer Sammlung vornehmen möchten (Hinzufügen und Entfernen), benötigen Sie List. Wenn Sie Ihre Sammlung nur lesen, sortieren und/oder filtern müssen, ist IEnumerable für diesen Zweck ausreichend.

Wenn Sie also in Ihrem praktischen Beispiel die vier Zeichenfolgen einzeln hinzufügen möchten, benötigen Sie List. Wenn Sie jedoch Ihre Sammlung auf einmal instanziieren würden, könnten Sie IEnumerable verwenden.

IEnumerable firstFourLettersOfAlphabet = new[]{"a","b","c","d"};

Sie können dann LINQ verwenden, um die Liste nach Ihren Wünschen zu filtern oder zu sortieren.

165
Scott Lawrence

Viele andere Typen als List implementieren IEnumerable, z. B. eine ArrayList. Ein Vorteil ist also, dass Sie verschiedene Sammlungstypen an dieselbe Funktion übergeben können.

13
DasDave