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

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

35 голосов
/ 13 декабря 2008

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

Ответы [ 5 ]

47 голосов
/ 13 декабря 2008

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

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

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

14 голосов
/ 13 декабря 2008

List - это общая реализация 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
5 голосов
/ 22 июня 2009

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

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

3 голосов
/ 14 декабря 2008

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

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

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

2 голосов
/ 13 декабря 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...