2010-09-26 22 views

Antwort

31

Haben Sie versucht Array.Clear?

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

Beachten Sie, dass diese nicht Änderung der Größe des Arrays - nichts tun wird. Stattdessen wird jedes Element auf null gesetzt.

Wenn Sie etwas brauchen, das kann tatsächlich Größe ändern, verwenden Sie eine List<string> statt:

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

Danke! Ich konnte nicht verstehen, warum ich unter String-Methoden nicht klar finden konnte. Die Antwort ist natürlich, dass es sich um eine Array-Methode handelt. – user404651

+0

Ich sollte das wahrscheinlich schon wissen, aber wenn Sie nur das String-Array auf Null setzen, macht das den Speicher frei oder müssen Sie 'Array.Clear' aufrufen? – Coops

+1

@CodeBlend: Weder. Sie setzen ein Array nicht auf 'null' - Sie setzen eine * Variable * auf null. Wenn es kein Live-Verweis auf das Array ist, wird es * in Betracht * für die Garbage Collection (aber nicht sofort GC'd sein). Wenn Elemente innerhalb dieses Arrays vorhanden sind, auf die nur von diesem Array * Bezug genommen wird, sind sie auch für die Garbage Collection geeignet. –

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

Das wird nicht kompilieren - Clear keine Instanzmethode ist, und es ist auch nicht ohne Parameter. –

+0

@ Jon Skeet: Zu spät, ich habe es bereits aktualisiert. ;) – Guffa

2

Es hängt von den Umständen (wie: was im Array) aber die beste Methode ist normalerweise, eine neue zu erstellen. Alle Referenzen auf den alten löschen.

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

array = new MyType[size]; 
-1

string [] foo;

foo = string [ ""];

1

Ich glaube, Sie auch mit diesem zum Beispiel wegkommen können: Suchbegriff = new String [] {};

-1

wie etwa

string[] foo; 
foo = null;