2017-01-21 6 views
0

Welche Vorteile bietet IEnumerable über die Liste? Zum Beispiel habe ich eine Klasse Employee und eine Sammlung von Mitarbeiter-Objekten, wenn ich jeden Mitarbeiter zu durchlaufen will, kann ich entweder verwenden:Verwenden von IEnumerable über Liste in C#

List<Employee> employees = new List<Employee>() { new Employee(...),...} 
foreach (Employee emp in employees) 
{ 
    Console.WriteLine(emp.Name); 
} 

oder kann ich IEnumerable als:

IEnumerable<Employee> employees = new List<Employee>() { new Employee(...),...} 

dann verwenden foreach Schleife.

Beide erreichen dasselbe Ziel, warum also bevorzugen wir es manchmal, IEnumerable über die Liste zu verwenden?

Antwort

1

Liste ist eine komplexere Struktur, die den Zugriff auf Werte nach Index ermöglicht und die Methoden Einfügen, Hinzufügen, Entfernen und andere Methoden unterstützt. IEnumerable ist eine sehr einfache Schnittstelle, die auch von der List-Klasse implementiert wird (obwohl es schwierig sein kann, die ersten Male zu implementieren). Das heißt, IEnumerable wird verwendet, wenn Sie die Extras, die eine Liste bietet, nicht benötigen. Andernfalls, weil eine Liste eine "ist a" -Beziehung mit IEnumerable hat, können Sie dieselbe aufgrund der Regeln der Kontravarianz, die C# vorsieht, verwenden. Hier finden Sie einige Dokumentation dazu:

https://msdn.microsoft.com/en-us/library/dd799517.aspx

auch über die Umsetzung eines IEnumerable:

https://msdn.microsoft.com/en-us/library/system.collections.ienumerable(v=vs.110).aspx

Zum Schluss, wenn alles, was Sie tun müssen, ist eine einfache Iterator wie ein verwenden foreach-Schleife, um durch das Ergebnis IEnumerable oder LINQ zu durchlaufen, als ein IEnumerable-Typ ist groß und leicht. Wenn Sie mehr Funktionalität benötigen, baut die Liste auf den Features auf, die IEnumerable erfordert, da es sich um IEnumerable und dann um einige handelt.

Verwandte Themen