Недавно я высказал свое мнение об этом в другом месте *, но я думаю, что он заслуживает дальнейшего анализа, поэтому я публикую это как свой собственный вопрос.
Скажем, что мне нужно создать и передать контейнер в моей программе. У меня, вероятно, нет сильного мнения об одном виде контейнера по сравнению с другим, по крайней мере на данном этапе, но я выбираю один; ради аргумента, скажем, я собираюсь использовать List < > .
Вопрос: Лучше ли писать мои методы для приема и возврата интерфейса высокого уровня, такого как С# IEnumerable? Или я должен писать методы для принятия и передачи определенного класса контейнера, который я выбрал.
Какие факторы и критерии я должен искать? Какие программы работают от одного или другого? Влияет ли компьютерный язык на ваше решение? Представление? Размер программы? Личный стиль?
(Это даже имеет значение?)
** (Домашнее задание: найдите его, но, пожалуйста, напишите свой ответ здесь, прежде чем искать свою собственную, чтобы не уклонять вас.) *