2011-01-28 17 views
6

La gente a menudo me dice que no use ArrayList para hacer mis arreglos en VB.NET. Me gustaría escuchar opiniones sobre eso, ¿por qué no debería? ¿Cuál es el mejor método para crear y manipular contenidos de matriz, dimensiones, etc.?¡No use ArrayList!

Gracias.

Respuesta

7

Use listas genéricas en su lugar. ArrayList no está escrito, lo que significa que puede tener una lista con cadenas, números, +++. Más bien se debe utilizar una lista genérica de esta manera:

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

La clase listas también le permite ampliar la lista sobre la marcha, sin embargo, también hace cumplir la tipificación que ayuda a escribir código más limpio (que no tienen por qué typecast) y el código que es menos propenso a errores.

ArrayList es, en general, solo un List(Of Object).

+0

Gracias por el consejo: D – Voldemort

1

Porque no está fuertemente tipado. Use un List(Of T) que T es su tipo.

4

ArrayLists no están marcados, por lo que tendrá que hacer un montón de boxing/unboxing. Use una colección .net que admita genéricos como Lista.

Debido a que List no tiene que deshacer la caja de sus objetos, ofrece un rendimiento sorprendentemente mejor que el Arraylist.

+0

El enlace de arriba para boxin/unboxing se rompe, por lo que aquí hay otra: http://msdn.microsoft. com/en-us/library/yz2be5wk.aspx – Thomas

3

ArrayLists son menos eficiente y la memoria-extensa:

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