ArrayList vs List

Я видел этот ответ от Jon на инициализации родового объекта с неизвестным типом :

Однако, если вы хотите, чтобы одна коллекция содержала несколько несвязанных типов значений, вам нужно будет использовать List

Я не сравниваю ArrayList vs List , но ArrayList vs List , так как оба будут отображать элементы object типа. Какая польза от использования одного в этом случае?

EDIT: здесь нет никакой заботы о безопасности типов, поскольку оба classа представляют object как свой элемент. По-прежнему нужно отбрасывать object с требуемым типом. Меня больше интересует все, кроме безопасности.

EDIT: Спасибо Marc Gravell и Шон за ответ. Извините, я могу выбрать только 1 как ответ, поэтому я буду голосовать за обоих.

Вы сможете использовать методы расширения LINQ напрямую с помощью List , но не с ArrayList , если вы не OfType Cast() / OfType (благодаря IEnumerable vs IEnumerable ). Это стоит совсем немного, даже если вам не нужна безопасность типов и т. Д.

Скорость будет примерно одинаковой; структуры будут по-прежнему в коробке и т. д. – так что больше нечего им рассказывать. Кроме того, что я склонен видеть ArrayList как «oops, кто-то снова пишет устаревший код …»; -p

Одно большое преимущество использования List заключается в том, что в наши дни большинство кода написано для использования общих classов / интерфейсов. Я подозреваю, что в наши дни большинство людей пишут метод, который принимает IList вместо IList . Поскольку ArrayList не реализует IList вы не сможете использовать список массивов в этих сценариях.

Я склонен думать о не общих classах / интерфейсах как устаревшем коде и избегать их, когда это возможно.

В этом случае ArrayList vs. List то вы не заметите различий в скорости. Могут быть некоторые различия в фактических методах, доступных для каждого из них, особенно в .NET 3.5, и подсчета методов расширения, но это больше связано с тем, что ArrayList несколько устарел, чем что-либо еще.

Да, помимо типизации, общие коллекции могут быть быстрее.

Из MSDN ( http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx )

Пространство имен System.Collections.Generic содержит интерфейсы и classы, которые определяют общие коллекции, которые позволяют пользователям создавать строго типизированные коллекции, которые обеспечивают лучшую безопасность и производительность по типу, чем нестандартные строго типизированные коллекции.

Сделайте некоторые бенчмаркинга, и вы узнаете, что лучше всего работает. Я хочу, чтобы разница была очень маленькой.

Список <> – это типичная версия ArrayList. Это гарантирует, что вы получите тот же тип объекта в коллекции.

  • Список или IList
  • Список привязок к DataGridView в WinForm
  • Подключить Список к ListBox и увидеть изменения источника данных в ListBox
  • Что такое List или ArrayList?
  • C #: Как добавить подтипы в ListView
  • Преобразовать список в список
  • Одновременно слияние нескольких кадров данных в списке
  • rbind dataframes в списке списков
  • .Contains () в списке пользовательских объектов classа
  • .NET List Concat vs AddRange
  • Как отсортировать список адресов Ip с помощью c #
  • Interesting Posts

    Аутентификация имени пользователя вместо электронной почты

    почему java-polymorphism не работает в моем примере

    Почему я не могу использовать аргумент типа в параметре типа с несколькими ограничениями?

    WPF, «Ссылка на объект не установлена ​​в экземпляр объекта» в Designer

    Java BufferedImage получает красный, зеленый и синий индивидуально

    Почему as.Date замедляет вектор символа?

    Подписчики на графиках в R

    Найти файл jar с именем classа?

    Как я могу получить путь к папке «Данные приложения» текущего пользователя?

    Задача фонового таймера в веб-приложении JSP / Servlet

    Настройка источника изображения WPF в коде

    Есть ли простой способ заполнения раскрывающегося списка в этой схеме базы данных доступа?

    Удалить элементы контекстного меню

    Должен ли доступ к SharedPreferences делать из streamа пользовательского интерфейса?

    Как использовать ключевые слова async в проекте targeting.net 4.0

    Давайте будем гением компьютера.