2009-10-28 10 views

risposta

4

È sempre possibile impostarlo su Nothing che cancellerà il riferimento. Quindi il garbage collector si prenderà cura di tutto il resto quando troverà che è una buona idea.

split = Nothing 

Tuttavia, se questa è una variabile locale di un metodo che non avrebbe in genere bisogno di preoccuparsi di questo, l'array sarà disponibile per la raccolta dei rifiuti, non appena si va fuori di portata.

+0

perché il tuo metodo è migliore di quello qui sotto? stai solo dicendo split = nothing? –

+0

Suppongo che dopo 'Array.Clear', split manterrà ancora un riferimento alla matrice (ora deselezionata). Nel mio esempio non farà riferimento a nulla. Direi che, nella maggior parte dei casi normali, la differenza non sarà evidente (presumo che la divisione sia una variabile locale in un metodo che diventa fuori campo quando il metodo viene eseguito). –

+1

+1 per "non c'è bisogno di preoccuparsi di questo" Non c'è una buona ragione per impostarlo su Nothing a meno che l'array stesso non sia una variabile globale, ed è improbabile. –

8
ReDim split(-1) 
+0

perché il metodo è migliore dei due seguenti –

+1

Il diverso nei tre metodi: redim split (-1) Ciò lascia la matrice come una matrice di stringhe con elementi zero. Array.Clear (split, 0, split.Length) Questo lascia l'array con tutti gli elementi assegnati a un valore di niente. split = nothing Questo lascia split assegnato un valore di nulla. Quale è meglio? Dipende, ma a volte fa la differenza. Ad esempio, se in seguito si utilizza ubound per trovare il limite superiore dello split, si otterrà 0, 3 o un errore per questi tre casi. – xpda

5

Non c'è bisogno di fare nulla. Il garbage collector farà i suoi lavori cancellando la variabile. Impostare in modo esplicito ogni variabile su niente rallenta l'applicazione.

+0

Questa è l'unica risposta corretta fornita finora. –

Problemi correlati