2008-12-13 3 views
35

В чем разница между ArrayList и List в VB.NET.NET: ArrayList против Список

+0

Ссылки на документы: [ `ArrayList`] (http://msdn.microsoft.com/en-us/library/system.collections.arraylist.aspx), [`List`] (http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx) – 2013-05-13 17:13:31

ответ

47

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

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

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

+0

Кроме того, List намного эффективнее с точки зрения использования памяти. См. Http://blogs.msdn.com/b/joshwil/archive/2004/04/13/112598.aspx – PapillonUK 2011-06-20 09:41:49

2

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

+0

Дженерики были введены с .NEt 2.0, но эти классы существовали и до этого. Есть ли разница в том, как эти классы внутренне написаны. – MOZILLA 2008-12-13 17:51:53

+0

Если не существует другого класса List, о котором я не знаю, это неправильно. Полное пространство имен List - System.Collections.Generic.List, что означает, что оно было специально добавлено для использования с Generics. – Kibbee 2008-12-14 01:53:20

14

Список является общей реализацией 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

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) является лучшим выбором, поскольку он делает явным, что вы имеете дело с разными типами.

5

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

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

Смежные вопросы