2009-10-28 17 views

Odpowiedz

4

Zawsze można ustawić na Nothing, który wyczyści odniesienie. Wtedy śmieciarz zaopiekuje się resztą, gdy uzna to za dobry pomysł.

split = Nothing 

Jednakże, jeśli jest to zmienna lokalna metody nie byłoby zazwyczaj trzeba się martwić o to, tablica będzie dostępna do odbioru śmieci tak szybko jak to jest poza zakresem.

+0

dlaczego twoja metoda jest lepsza niż ta poniżej? mówisz tylko split = nic? –

+0

Założę się, że po 'Array.Clear' split nadal będzie odwoływał się do tablicy (teraz wyczyszczonej). W mojej próbce nie będzie niczego porównywać. Powiedziałbym, że w większości normalnych przypadków różnica nie będzie zauważalna (zakładam, że podział jest zmienną lokalną w metodzie wykraczającej poza zakres stosowania metody). –

+1

+1 dla "nie trzeba się tym martwić" Nie ma żadnego powodu, aby ustawić go na Nic, chyba że sama tablica jest zmienną globalną i jest to mało prawdopodobne. –

8
ReDim split(-1) 
+0

dlaczego twoja metoda jest lepsza niż dwie poniżej? –

+1

Różne w trzech metodach: redim split (-1) To pozostawia tablicę jako tablicę ciągów z zerowymi elementami. Array.Clear (split, 0, split.Length) To pozostawia tablicę z wszystkimi jej elementami, którym przypisano wartość zero. split = nothing To pozostawia podział przypisany wartość nic. Co jest lepsze? To zależy, ale czasami robi różnicę. Na przykład, jeśli później użyjesz funkcji ubound do znalezienia górnej granicy podziału, otrzymasz 0, 3 lub błąd dla tych trzech przypadków. – xpda

5

Nie trzeba nic robić. Śmieciarz wykona swoje zadania, usuwając zmienną. Jawnie ustawiona każda zmienna do niczego spowolni Twoją aplikację.

+0

Jest to jedyna poprawna odpowiedź podana do tej pory. –

Powiązane problemy