2017-10-20 2 views
1

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

* "Ist es eine gute Praxis, IEnumerable zu verwenden, wenn keine Funktionalität von IList oder List benötigt wird?" * - Ja. –

+0

Ja, weil es öffnet, was Sie wie ein Array oder eine Lazy geladene Linq-Abfrage übergeben können. – juharr

+0

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. –

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