Sollten Parameter / Rückgaben von Sammlungen IEnumerable <T> oder T [] sein?

Als ich die Linq-Denkweise übernommen habe, neigte ich immer mehr dazu, Sammlungen über das @ -Zeichen weiterzugebeIEnumerable<T> generischer Typ, der die Basis der meisten Linq-Operationen zu bilden scheint.

Jedoch frage ich mich, mit der späten Auswertung desIEnumerable<T> generischer Typ, wenn das eine gute Idee ist. Ist es sinnvoller, das @ zu verwendeT[] generischer Typ?IList<T>? Oder etwas anderes

Bearbeiten Die Kommentare unten sind sehr interessant. Eine Sache, die jedoch nicht angesprochen wurde, scheint das Thema Thread-Sicherheit zu sein. Wenn Sie zum Beispiel ein @ nehmIEnumerable<T> Argument zu einer Methode und es wird in einem anderen Thread aufgezählt. Wenn dieser Thread dann versucht, darauf zuzugreifen, können die Ergebnisse anders sein als die, die übergeben werden sollten. Schlimmer noch, es wird versucht, ein @ aufzulisteIEnumerable<T> zweimal - ich glaube wirft eine Ausnahme. Sollten wir nicht danach streben, unsere Methoden sicherer zu machen?

Antworten auf die Frage(16)

Ihre Antwort auf die Frage