Я читал статьи, в которых говорится, что используйте ICollection<T>
, если вам нужна функциональность IEnumerable<T>
, но также требуется свойство Count
.
Однако, поскольку методы расширения в System.Linq.Enumerable
предоставляют методынапример, ElementAt()
, почему бы вам не использовать вместо него IList<T>
, поскольку он использует индексатор?
Мне кажется, что ICollection<T>
может делать то же, что может IList<T>
, только вгораздо более многословный и менее читабельный способ.
Какой сценарий будет более читабельным / более эффективным, более строгим в соответствии с принципами SOLID, или какой-нибудь, как лучше каким-либо образом использовать ICollection<T>
вместо IList<T>
?
РЕДАКТИРОВАТЬ:
Ответы на дубликаты вопросов не отвечают на мой вопрос, поскольку они избегают говорить о том факте, что ICollection<T>
может делать то, что делает IList<T>
, но в гораздо более уродливомway.
Если они оба делают одно и то же, почему бы просто не использовать очиститель IList<T>
?
Я получил гораздо лучшие ответы здесь: https://www.reddit.com/r/csharp/comments/dl9xao/why_use_icollectiont_over_ilistt/