По большей части универсальные коллекции будут работать быстрее, чем неуниверсальные аналоги, и у вас будет преимущество иметь строго типизированную коллекцию. Сравнивая коллекции, доступные в System.Collections и System.Collections.Generic, вы получаете следующую «миграцию»:
Non-Generic Generic Equivalent
------------------------------------------------------------
ArrayList List<T>
BitArray N/A
CaseInsensitiveComparer N/A
CollectionBase Collection<T>
Comparer Comparer<T>
DictionaryBase Dictionary<TKey,TValue>
Hashtable Dictionary<TKey,TValue>
Queue Queue<T>
ReadOnlyCollectionBase ReadOnlyCollection<T>
SortedList SortedList<TKey,TValue>
Stack Stack<T>
DictionaryEntry KeyValuePair<TKey,TValue>
ICollection N/A (use IEnumerable<T> or anything that extends it)
IComparer IComparer<T>
IDictionary IDictionary<TKey,TValue>
IEnumerable IEnumerable<T>
IEnumerator IEnumerator<T>
IEqualityComparer IEqualityComparer<T>
IList IList<T>
ICollection является неизменяемой (нет членов для изменения содержимого коллекции), в то время как ICollection является изменяемой. Это делает интерфейсы похожими только по названию, в то время как ICollection и IEnumerable отличаются очень мало.
Из этого списка единственными неуниверсальными классами, которые не имеют универсального аналога, являются BitArray и CaseInsensitiveComparer.