2009-04-03 9 views

Odpowiedz

20

Niewłaściwy sposób:

myArray = Nothing 

Tylko ustawia zmienną wskazując na tablicy do niczego, ale w rzeczywistości nie wyczyścić tablicę. Wszystkie pozostałe zmienne wskazujące na tę samą tablicę będą nadal zawierać tę wartość. Dlatego konieczne jest wyczyszczenie tablicy.

Correct Way

Array.Clear(myArray,0,myArray.Length) 
+0

Wprowadzono drobną korektę w kodzie. ;-) – Cerebrus

+0

* Powolna runda aplauzu na cerebrus *, który czyni go bardziej zrozumiałym :) – TheTXI

+3

To nie oczyszcza tablicy - ustawia zmienną na Nic. Cokolwiek innego odnoszące się do tej samej tablicy nadal będzie wyświetlać istniejące wartości. –

2

zależności od tego, co chcesz:

  • Przypisywanie Nothing (null)
  • Przypisywanie nowy (pusty) tablicę
  • Array.Clear

Ostatnie może być najwolniejsze, ale tylko opcja, jeśli nie chcesz nowej tablicy.

2

Jeśli chcesz zrobić rzeczy takie jak jasne, prawdopodobnie wolisz kolekcję niż List(Of String) niż tablicę.

+0

Dobrze, ale istniejąca tablica ... nie można podzielić ciągu na listę ciągów w jednym poleceniu? – spacemonkeys

+0

Nie, ale można wywołać .ToList() na wynik String.Split. –

+0

Lub List.AddRange() –

6

I oczywiście istnieje sposób VB za pomocą słowa kluczowego Erase:

Dim arr() as String = {"a","b","c"} 
Erase arr 
+1

+1 dla VBism, ale niestety "Erase" jest [udokumentowane] (https://msdn.microsoft.com/en-us/library/83zyeke9.aspx) być taki sam jako ustawienie zmiennej "nic". Nie usuwa tablicy. –

1

ReDim arr (1,1,1,1) a następnie Redim (Z, X, Y, v) do swoich wymiary