Подтвердить что ты не робот

.NET: ArrayList vs List

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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