2010-09-26 4 views

Répondre

31

Avez-vous essayé Array.Clear?

string[] foo = ...; 
Array.Clear(foo, 0, foo.Length); 

Notez que ce ne sera pas changer la taille du tableau - rien ne le faire. Au lieu de cela, il définira chaque élément à null.

Si vous besoin de quelque chose qui peut fait changer la taille, utilisez un List<string> à la place:

List<string> names = new List<string> { "Jon", "Holly", "Tom" }; 
names.Clear(); // After this, names will be genuinely empty (Count==0) 
+0

Merci! Je ne pouvais pas comprendre pourquoi je ne pouvais pas trouver clair sous des méthodes de cordes. La réponse, bien sûr, est que c'est une méthode de tableau. – user404651

+0

Je devrais probablement le savoir maintenant mais si vous venez de mettre le tableau de chaînes à null cela libère-t-il de la mémoire ou faut-il appeler 'Array.Clear'? – Coops

+1

@CodeBlend: Aucun. Vous ne définissez pas un tableau à 'null' - vous définissez une * variable * à null. Quand il n'y a pas de références en direct au tableau, il sera * éligible * pour la récupération de place (mais ne sera pas immédiatement GC'd). S'il y a des éléments dans ce tableau qui sont * seulement * référencés par ce tableau, ils sont également éligibles pour la récupération de place. –

9
Array.Clear(theArray, 0, theArray.Length); 
+0

Cela ne va pas compiler - Clear n'est pas une méthode d'instance, et elle n'est pas non plus sans paramètre. –

+0

@Jon Skeet: Trop tard, je l'ai déjà mis à jour. ;) – Guffa

2

Cela dépend de circonstances (comme: ce qui est dans le tableau) mais la meilleure méthode consiste généralement à en créer une nouvelle. Suppression de toutes les références à l'ancien.

MyType[] array = ... 
.... 

array = new MyType[size]; 
-1

chaîne [] foo;

foo = chaîne [""];

1

Je pense que vous pouvez également sortir avec ceci par exemple: SearchTerm = new string [] {};

-1

que diriez-vous

string[] foo; 
foo = null; 
Questions connexes