Общий список <> был разработан для скорости и внутреннего использования. Универсальная коллекция <>, с другой стороны, была разработана для расширяемости.
Одним из преимуществ класса Collection <> является то, что вы можете переопределить несколько различных методов (ClearItems (), InsertItem (), RemoveItem () и SetItem ()). С другой стороны, универсальный тип List <> не предоставляет методов, которые могут быть переопределены.
Почему это имеет значение? Скажем, например, что будущие требования требуют, чтобы вы вызывали событие ItemAdded при добавлении элемента в коллекцию. Если бы вы использовали тип List <>, у вас не так много вариантов. Однако если бы вы использовали класс Collection <>, у вас есть возможность открыть новое событие ItemAdded и переопределить метод InsertItem (), чтобы он вызывал событие ItemAdded при добавлении элемента.