2011-01-28 48 views
6

人们经常告诉我不要使用ArrayList在VB.NET中创建数组。 我想听听有关这方面的意见,为什么我不应该?创建和操作数组内容,尺寸等的最佳方法是什么?不要使用ArrayList!

谢谢。

回答

7

改为使用通用列表。 ArrayList不是键入的,这意味着你可以有一个包含字符串,数字,+++的列表。相反,你应该使用一个通用的清单如下:

Dim list1 As New List(Of String) ' This beeing a list of string 

的列表级,您还可以扩大在飞行名单,但是,它也执行打字,这有助于编写简洁的代码(你不必类型转换)以及不易出错的代码。

ArrayList通常只是一个List(Of Object)

+0

谢谢你的忠告:d – Voldemort 2011-01-28 05:18:49

1

因为它没有强类型。使用List(Of T),其中T是您的类型。

4

ArrayLists不是类型检查,所以你将需要做很多boxing/unboxing。使用.net集合,而不是像List那样支持泛型。

因为List不必拆箱,所以它拥有比Arraylist更出色的性能。

+0

上面博欣/拆箱的链接断开,所以这里的另一个问题:http://msdn.microsoft。 COM/EN-US /库/ yz2be5wk.aspx – Thomas 2014-10-13 14:36:24

3

ArrayLists不太高性能和内存广泛:

Dim list1 As New ArrayList 
For i As Integer = 1 To 100000000 
    list1.Add(i) 
Next 
' --> OutOfMemoryException after 13.163 seconds, having added 67.108.864 items 

Dim list2 As New List(Of Integer) 
For i As Integer = 1 To 100000000 
    list2.Add(i) 
Next 
' --> finished after 1.778 seconds, having added all values