Чего не хватает в этой стратегии выбора коллекции C # для использования?

Вот моя стратегия выбора того, какой тип коллекции C # использовать:

  • если количество элементов в коллекции фиксировано, используйте массив , например:

    string [] direction = new string [] {«север», «юг», «восток», «запад» "};

  • в противном случае всегда используйте List

  • , если, конечно, вам не нужна более специализированная коллекция, например Stack , Queue или Dictionary

  • но никогда больше не используйте ArrayList

Исходя из вашего опыта, чего не хватает в этой стратегии?

7
задан 2 revs, 2 users 100% 21 April 2013 в 17:37
поделиться

3 ответа

Ваши правила работают нормально.

В дополнение:

  • Всегда перферируют универсальные (или специализированные) коллекции над неонеральными (объектными) коллекциями.
  • Используйте HashSet, если вы хотите проверить простое существование, а не сопоставления ключ-значение-(которое представлено через Dictionary).
  • В случае словарей рассмотрите возможность использования упорядоченных карт (SortedList<...>, SortedDictionary<...>) если заказ кажется важным.
  • Используйте связанные списки, если операции удаления/вставки находятся посередине.

и, конечно, самый важный:

  • Никогда не экспортируйте конкретные типы коллекций: всегда используйте наиболее общий интерфейс, который в большинстве случаев является IList или IEnumerable.
7
ответ дан 6 December 2019 в 19:31
поделиться

Я бы сказал, что в большинстве случаев, даже если я знаю количество элементов в коллекции, я бы использовал List, просто из-за количества полезных функций, которые он предоставляет, и совместимости с LINQ.

Hashmaps - важный случай использования, когда вы хотите получить более быстрый доступ к элементам внутри коллекции.

5
ответ дан 6 December 2019 в 19:31
поделиться

Вы также можете использовать Collection , если вы планируете переопределить методы добавления / удаления / очистки в унаследованном классе из-за наличия виртуальных методов.

1
ответ дан 6 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: