Dictionary<string,int> x=new Dictionary<string,int>();
x.add(...);
...
然后我想清空x,是直接给它赋个null好呢,还是用x.clear()方法好?
如果你不要用x了就赋为null,不然就clear
老子日都一样啊
x.clear()方法是清空里面的项,而=null是意思是所有的内容 为空,这样的话,如果不用则好,如果下面还要用的话可能就效率上就不如null了
看看你想要做什么然后选一个吧
有区别。
Object o = null; 此时并没有在内存中分配空间,并且没有分配内存地址指针。
当实例化后,将会分配空间,例如Object o = new Object();此时也会分配内存地址指针。
但是X.Clear()将清空内存分配的内容,并不占用空间,但是分配内存地址指针还在。
形象地说,如果赋以空值,你就不能再用x变量装载内容了,就像是把一个装满货物的大卡车扔了,丢在大街上弃用了,再想运货时你就没有车了,只能再弄辆新车(new一个新的Dictionary<>对象)。
而Clear()方法只是将里面的内容清空,就相当于把车上的货物全扔掉,但车还在,可以再装新的东西。
设为null时只是将x变量指向空的地方,而原来创建的那个Dictionary<>对象并没有立即从内存中消失,它需要等待.net垃圾回收器进行回收,而在此之间假如你又要用到Dictionary<>对象,那么你又得new一个新的Dictionary<>对象,这样无论内存还是CPU占用情况都有所增加。
如果你要经常性的使用Dictionary<>对象,显然是Clear()性能更好,你可以创建一个静态成员放置它以重复使用,而不是将其设为临时变量不断创建和弃用。
斯亚说得很形象。
说不要说脏话,自己却先说了,不知道你是不是“他妈的”