2010-09-26 25 views

Respuesta

31

¿Has probado Array.Clear?

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

Tenga en cuenta que esta no será el cambio del tamaño de la matriz - nada va a hacer eso. En cambio, establecerá que cada elemento sea nulo.

Si necesita algo que puede realidad cambiar el tamaño, utilice un List<string> lugar:

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

Gracias! No podía entender por qué no podía encontrar claro bajo los métodos de cadena. La respuesta, por supuesto, es que es un método de matriz. – user404651

+0

Probablemente ya debería saber esto, pero si simplemente configuras el conjunto de cadenas como nulo, ¿eso libera la memoria o tienes que llamar a 'Array.Clear'? – Coops

+1

@CodeBlend: Ninguno. No establece una matriz en 'nulo' - establece una * variable * en nulo. Cuando no hay referencias en vivo a la matriz, será * elegible * para la recolección de basura (pero no se GC'd inmediatamente). Si hay elementos dentro de esa matriz a los que * solo * hace referencia esa matriz, también son elegibles para la recolección de basura. –

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

Eso no se compilará - Borrar no es un método de instancia, y tampoco tiene parámetros. –

+0

@Jon Skeet: Demasiado tarde, ya lo actualicé. ;) – Guffa

2

Depende de las circunstancias (como: lo que está en la matriz) pero el mejor método generalmente es crear uno nuevo. Dejar caer todas las referencias al anterior.

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

array = new MyType[size]; 
-1

cuerdas [] foo;

foo = string [""];

1

Creo que también puede salirse con la suya, por ejemplo: SearchTerm = new string [] {};

-1

¿qué tal

string[] foo; 
foo = null; 
Cuestiones relacionadas