Вот моя стратегия выбора того, какой тип коллекции C # использовать:
если количество элементов в коллекции фиксировано, используйте массив , например:
string [] direction = new string [] {«север», «юг», «восток», «запад» "};
в противном случае всегда используйте List
, если, конечно, вам не нужна более специализированная коллекция, например Stack
но никогда больше не используйте ArrayList
Исходя из вашего опыта, чего не хватает в этой стратегии?
Ваши правила работают нормально.
В дополнение:
объектными
) коллекциями. HashSet
, если вы хотите проверить простое существование, а не сопоставления ключ-значение-(которое представлено через Dictionary
). SortedList<...>
, SortedDictionary<...>
) если заказ кажется важным. и, конечно, самый важный:
IList
или IEnumerable
. Я бы сказал, что в большинстве случаев, даже если я знаю количество элементов в коллекции, я бы использовал List, просто из-за количества полезных функций, которые он предоставляет, и совместимости с LINQ.
Hashmaps - важный случай использования, когда вы хотите получить более быстрый доступ к элементам внутри коллекции.
Вы также можете использовать Collection
, если вы планируете переопределить методы добавления / удаления / очистки в унаследованном классе из-за наличия виртуальных методов.