2010-09-26 70 views

回答

31

您试过Array.Clear

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

注意这不会改变数组的大小 - 什么也不会做。相反,它会将每个元素设置为null。

如果你需要的东西,可以实际上改变大小,使用List<string>代替:

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

谢谢!我无法理解为什么我无法在字符串方法下找到明确的。答案当然是,它是一种数组方法。 – user404651 2010-09-27 09:46:55

+0

我现在应该知道这一点,但如果你只是将字符串数组设置为null,那么释放内存还是需要调用'Array.Clear'? – Coops 2013-08-15 08:25:01

+1

@CodeBlend:都没有。您不要将数组设置为'null' - 将*变量*设置为null。当没有对数组的实时引用时,它将*符合*用于垃圾回收(但不会立即GC'd)。如果数组中有元素被*数组引用,那么他们也有资格进行垃圾回收。 – 2013-08-15 08:57:50

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

不会编译 - 清除不是实例方法,也不是无参数。 – 2010-09-26 12:46:55

+0

@Jon Skeet:太晚了,我已经更新了。 ;) – Guffa 2010-09-26 12:47:35

2

这要看情况(如:什么是阵列中)但最好的方法通常是创建一个新的。删除所有对旧的引用。

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

array = new MyType[size]; 
-1

string [] foo;

foo = string [“”];

1

我想你也可以逃避这个例子: SearchTerm = new string [] {};

-1

怎么样

string[] foo; 
foo = null;