В чем разница между ArrayList и List в VB.NET
.NET: ArrayList vs List
Ответ 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.