2011-01-28 22 views
6

Ludzie często mówią, żebym nie używał ArrayList do tworzenia moich tablic w VB.NET. Chciałbym usłyszeć opinie na ten temat, dlaczego miałbym nie? Jaka jest najlepsza metoda tworzenia i manipulowania zawartością, wymiarami itp.?Nie używaj ArrayList!

Dzięki.

Odpowiedz

7

Zamiast tego użyj ogólnych list. ArrayList nie jest wpisane, co oznacza, że ​​możesz mieć listę zawierającą ciągi, liczby, +++. Raczej należy użyć rodzajowego listę tak:

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

zawartości list klasy także pozwala rozwinąć listę na bieżąco, jednak również wymusza pisanie który pomaga pisać kod czystsze (nie masz do typecast) i kod, który jest mniej podatny na błędy.

ArrayList ogólnie mówi po prostu List(Of Object).

+0

Dziękuję za radę: D – Voldemort

1

Ponieważ nie jest mocno napisany. Użyj numeru List(Of T), który jest Twoim typem.

4

ArrayLists nie są sprawdzane typu, więc będziesz musiał zrobić dużo boxing/unboxing. Zamiast tego korzystaj z kolekcji .net obsługującej typy ogólne, takie jak Lista.

Ponieważ lista nie musi rozpakowywać obiektów, ma zaskakująco lepszą wydajność niż Arraylist.

+0

Powyższy link do Boxin/unboxing jest zepsuty, więc tutaj jest inny: http://msdn.microsoft. com/en-us/library/yz2be5wk.aspx – Thomas

3

ArrayLists są mniej wydajnych i pamięci rozległe:

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 
Powiązane problemy