Wenn ich eine Liste als Argument einer Methode nehmen möchte, gibt Resharper einen Hinweis, dass die Verwendung der IList-Schnittstelle eine bessere Idee sein könnte. Wenn ich dann List mit IList ersetze, schlägt Resharper IEnumerable vor. In Java würde ich auch die List-Schnittstelle und nicht die ArrayList als Argument nehmen. Aber ist es wirklich gut aussehender Code, iEnumerable als Argument zu verwenden? Ist es empfehlenswert, IEnumerable zu verwenden, wenn keine Funktionen von IList oder List erforderlich sind?C# List IList oder IEnumerable als Argument
1
A
Antwort
5
ist hier the article, die mich daran, dass über alle ändern gemacht und hat mich nach dem Prinzip der
nehmen Sie die allgemeinste Art zu starten, geben die meisten spezifischen Typ
So zu antworten Ihre Frage
Ist diese bewährte Methode, IEnumerable zu verwenden, wenn keine Funktionalität von IList oder List erforderlich ist?
ja, ist es
Anmerkung: nicht tun, über sie! Ich habe Code gesehen, der eine IEnumerable
akzeptiert hat, und dann eine Ausnahme ausgelöst, wenn der Parameter kein List
war. Das ist blöd. Was der oben zitierte Satz bedeutet, ist "Fragen Sie nicht nach mehr Spezifität, als Sie benötigen"
Verwandte Themen
- 1. foreach auf IEnumerable oder IList
- 2. Cast IList zu IEnumerable
- 3. Null in IEnumerable vs IList
- 4. IEnumerable <> zu IList <>
- 5. Was soll ich mit IEnumerable oder IList verwenden?
- 6. Wie sortiere ich IList C# nach Datum?
- 7. Warum ArrayList IList, ICollection, IEnumerable implementieren?
- 8. IList <T> vs IEnumerable <T>. Was ist effizienter IList <T> oder IEnumerable <T>
- 9. Was ist der Unterschied zwischen IEnumerable und Array, IList und List?
- 10. Benutzerdefinierte Sammlung mit IEnumerable vs ICollection vs IList
- 11. C++ Vorlage binäre Suchbaum - Argument list Fehler
- 12. Ist es möglich, GroupCollection in List oder IEnumerable zu konvertieren?
- 13. Praktischer Unterschied zwischen List und IEnumerable
- 14. ein leeres IEnumerable Argument auf ein Verfahren
- 15. Welche bevorzugen Sie für Schnittstellen: T [], IEnumerable <T>, IList <T> oder andere?
- 16. Verwenden von generischen Kontravarianten mit IList und IEnumerable
- 17. Wie IList Wert als Parameter an nicht IList Methode
- 18. Konvertierung von IEnumerable <T> zu IList
- 19. Was ist der Unterschied, wenn wir IList vs List oder IEnumerable vs List <Class> zurückgeben. Ich möchte wissen, welches besser ist, zurückzugeben
- 20. Python: List Argument Übergabe
- 21. C# dynamische zugreifenden Kind als IEnumerable
- 22. Sortieren einer IList in C#
- 23. Welche Schnittstelle sollte mein Dienst zurückgeben? IQueryable, IList, IEnumerable?
- 24. optionale Liste Argument "list = Liste oder []" in Python
- 25. C# anzeigen IEnumerable Elemente
- 26. C# IEnumerable Implementierung
- 27. C++ - Null-Zeiger-Argument als optionales Argument Alternative in C#
- 28. Pass constexpr intializer_list als Argument in C++ 14
- 29. List Datenstruktur C# Effizienz
- 30. C# übergeben Funktion als Argument
* "Ist es eine gute Praxis, IEnumerable zu verwenden, wenn keine Funktionalität von IList oder List benötigt wird?" * - Ja. –
Ja, weil es öffnet, was Sie wie ein Array oder eine Lazy geladene Linq-Abfrage übergeben können. – juharr
Es ist immer gut, Methoden bereitzustellen, die wiederverwendbar sind. Wenn Sie nach der Basisschnittstelle aller generischen Sammlungen fragen, können Sie diese Methode mit vielen Typen verwenden, nicht nur mit Listen. 'IList' umfasst Listen und Arrays, aber wenn Sie keine Methoden von 'IList ' benötigen, können Sie 'IEnumerable ' verwenden. –