将一个list清空和赋值null到底有什么区别

jobsoo 2011-11-28 03:12:09
List<string> list=....

list.Clear();
list=null;

对于内存释放等有什么区别?
...全文
971 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonespace 2011-11-28
  • 打赏
  • 举报
回复
不过调用list.Clear();会减轻GC.Collect方法的负担,使其能更快完成清除内存的工作,所以如果元素很多,我会三句都写:

list.Clear();
list=null;
GC.Collect();

但GC.Collect();通常会消耗很多时间,所以如果数组元素不多的情况没必要直接调用GC.Collect,让系统在它感到不适的时候自动调用GC.Collect为好,


qldsrx 2011-11-28
  • 打赏
  • 举报
回复
不用了,就设置为null,如果还要new一个使用,那不如Clear了继续用得好。因此单独比较内存释放是没有意义的,要看具体场合用具体的功能。
另外在局部变量时,离开作用域自动释放,相当于赋值null,因此一般很少有人会特意使用这个null的。
stonespace 2011-11-28
  • 打赏
  • 举报
回复
=null还没有立刻把内存清掉,要调用GC.Collect();才会清掉内存,

Clear方法和=null差不多,也不会马上把内存清掉,直到GC.Collect()调用为止(如果你不调用的话系统会在适当的时机调用)

[Quote=引用 4 楼 jobsoo 的回复:]

=null 是把占用的内存直接清掉了吗?

那种方式能更快的把内存清空掉
[/Quote]
jobsoo 2011-11-28
  • 打赏
  • 举报
回复
=null 是把占用的内存直接清掉了吗?

那种方式能更快的把内存清空掉
幕夜 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zyloveyrf 的回复:]

list=null;
list.Clear();只是清空了内容 在内存上它还是占有空间 而=null 就是不占用内存空间
[/Quote]+1
萧炎 2011-11-28
  • 打赏
  • 举报
回复
list=null;
list.Clear();只是清空了内容 在内存上它还是占有空间 而=null 就是不占用内存空间
jobsoo 2011-11-28
  • 打赏
  • 举报
回复
那个能更快的释放内存

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧