2009-10-28 4 views

Répondre

4

Vous pouvez toujours le mettre à Nothing qui effacera la référence. Alors le garbage collector s'occupera du reste quand il trouvera que c'est une bonne idée.

split = Nothing 

Cependant, si cela est une variable locale d'une méthode que vous généralement pas à se soucier de cela, le tableau sera disponible pour la collecte des ordures dès qu'il est hors de portée.

+0

Pourquoi votre méthode est-elle meilleure que celle ci-dessous? vous dites juste split = rien? –

+0

Je supposerais qu'après 'Array.Clear', split maintiendra toujours une référence au tableau (maintenant effacé). Dans mon échantillon, il ne fera référence à rien. Je dirais que dans la plupart des cas normaux, la différence ne sera pas perceptible (je suppose que split est une variable locale dans une méthode qui sort du cadre lorsque la méthode est terminée). –

+1

+1 pour "pas besoin de s'inquiéter à ce sujet" Il n'y a pas de bonne raison de le mettre à moins que le tableau lui-même est une variable globale, et c'est peu probable. –

8
ReDim split(-1) 
+0

pourquoi votre méthode est meilleure que les deux ci-dessous –

+1

Le différent dans les trois méthodes: redim split (-1) Cela laisse le tableau comme un tableau de chaînes avec zéro élément. Array.Clear (split, 0, split.Length) Cela laisse le tableau avec tous ses éléments assignés une valeur de rien. Split split = nothing Ceci laisse une valeur de rien à Split. Quel est le meilleur? Cela dépend, mais parfois cela fait une différence. Par exemple, si vous utilisez ultérieurement ubound pour trouver la limite supérieure de split, vous obtiendrez 0, 3 ou une erreur pour ces trois cas. – xpda

5

Pas besoin de faire quoi que ce soit. Le garbage collector fera son travail en effaçant la variable. Définir explicitement chaque variable sur rien va ralentir votre application.

+0

C'est la seule bonne réponse fournie jusqu'à présent. –

Questions connexes