Поскольку я включаю мышление Linq, я все больше склоняюсь к тому, чтобы передавать коллекции с помощью типового типа IEnumerable<T>
, который, как представляется, является основой большинства операций Linq.
Однако мне интересно, с поздней оценкой типового типа IEnumerable<T>
, если это хорошая идея. Имеет ли смысл использовать типовой тип T[]
? IList<T>
? Или что-то еще?
Изменить: Комментарии ниже довольно интересны. Одна вещь, которая до сих пор не решена, по-видимому, является проблемой безопасности потоков. Если, например, вы принимаете аргумент IEnumerable<T>
для метода и его перечисляете в другом потоке, тогда, когда этот поток пытается получить к нему доступ, результаты могут отличаться от результатов, которые должны были быть переданы. Хуже того, пытаясь дважды перечислить IEnumerable<T>
- я считаю, что это исключение. Разве мы не должны стремиться к тому, чтобы наши методы были безопасными?