Я нашел множество документов и рекомендаций по IEnumerator, IEnumerable, ICollection, IList и их общим аналогам. К сожалению, я еще не нашел учебника или книги, которые объясняли бы всю иерархию интерфейсов, общие реализации этих интерфейсов и - наилучшее использование каждого из них.
Что было вашим лучшим источником знаний о дженериках, их интерфейсах и примерах рекомендуемого использования их в C#?





Я пришел к их пониманию, просто глядя на их интерфейсы.
Наследование происходит так:
IList: ICollection: IEnumerable
Когда вы просматриваете интерфейс IEnumerable, обратите внимание, что в нем есть только минимум, необходимый для того, чтобы иметь возможность перебирать кучу элементов. В нем нет счета или чего-то еще. IEnumerable хорошо работает, даже если вы смотрите на поток, идущий по сети.
ICollection добавляет Count. Если вы реализуете какую-то коллекцию и если ее размер легко узнать, вам следует реализовать это. В этом случае общий интерфейс немного отличается. ICollection <T> также имеет методы для изменения коллекции путем добавления и удаления членов. Неупорядоченный набор будет хорошим кандидатом для ICollection.
IList добавляет возможность получать и устанавливать элементы коллекции по индексу. Используйте это, когда порядок элементов важен. Когда у вас есть индексы, вы можете делать такие вещи, как менять местами 4-й и 5-й элементы, чтобы изменить их порядок.
ты просто пропустил один :)
IDictionary: IList: ICollection: IEnumerable
IDictionary он немного отличается от других интерфейсов - кажется, это просто набор пар ключ / значение (та же функциональность, что и у ICollection <KeyValuePair <key, value >>), если я не ошибаюсь.
Вы должны пометить эти теги как коллекции. Дженерики не всегда используются для коллекций.