.NET: ArrayList против списка

В чем разница между ArrayList и List в VB.NET

Ссылки на документы: ArrayList, List

Rory O'Kane 13.05.2013 21:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
37
1
49 577
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Список может использовать универсальные шаблоны, чтобы в него можно было помещать только объекты определенных типов, чтобы можно было выполнять дополнительную проверку типов и сократить время обработки за счет упаковки и распаковки. Arraylist не может это использовать. Почти во всех случаях вы захотите использовать List, а не Arraylist.

Обобщения были введены в .NEt 2.0, но эти классы существовали и до этого. Есть ли разница во внутреннем написании этих классов?

MOZILLA 13.12.2008 20:51

Это неверно, если нет другого класса List, о котором я не знаю. Полное пространство имен List - это System.Collections.Generic.List, что означает, что оно было специально добавлено для использования с Generics.

Kibbee 14.12.2008 04:53
Ответ принят как подходящий

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

Общие списки были введены в .Net 2.0 и являются подходящим вариантом. Часто список лучше, чем массив, но с некоторыми недостатками.

Поскольку эти коллекции являются частью библиотеки базовых классов .Net, этот совет также применим к C# и к любому языку .Net, который поддерживает обобщенные типы - это не относится к VB.NET.

Кроме того, List намного эффективнее с точки зрения использования памяти. См. blogs.msdn.com/b/joshwil/archive/2004/04/13/112598.aspx

PapillonUK 20.06.2011 13:41

Список - это общая реализация ArrayList. ArrayList хранит все объекты как System.Object, которые вам нужно затем привести к соответствующему типу. ArrayLists неоднородны, List может хранить только один тип объектов - этот тип указан в качестве его универсального параметра.

List<string> strList; // can store only strings
List<int> intList; // can store only ints
ArrayList someList; // can store anything

Конечно, технически вы всегда можете составить список, в котором хранится тип «Object», и хранить в нем что угодно, потому что все по своей сути наследуется от объекта.

Kibbee 13.12.2008 20:55

ArrayList позволяет вам написать это:

Dim customers as new ArrayList
Dim c as new Customer
Dim m as new Manager
customers.Add(c)
customers.Add(m)

'This will cause an exception '  
For each c as Customer in customers
console.writeline(c.Name)
Next

Список (of Customer) допускает только объекты типа Customer и типы, которые наследуются от Customer, поэтому вы не можете совершать такие ошибки.

Даже если вам нужно поместить объекты несвязанных типов в одну и ту же коллекцию, List (Of Object) - лучший выбор, поскольку он явно указывает на то, что вы имеете дело с разными типами.

ArrayLists еще более неэффективны при использовании на 64-битных системах для хранения примитивных элементов из-за 64-битных ссылок на память в отличие от 32-битных ссылок на 32-битных машинах и бокса.

См. Это для более подробной информации: http://blogs.msdn.com/joshwil/archive/2004/04/13/112598.aspx

Другие вопросы по теме