抄了这几年代码,话说学而不思则罔,死而不学则殆。
最近在看别人代码,发现有这么一段//清理对象。
name = nullname 这个对象在执行到最后的时候给赋值null了。
我记得如果说
string name = "名字";
这样其实是初始了两个变量吧,一个是name,一个是存放"名字"的地方。
那这样写 name=null,如果说是释放了,岂不是就释放了一个地方么?
还有这样写name=null 会提高系统效率么?在Csharp中。在C++中必须要释放吧?
还请大侠来指点指点。谢谢! :)CsharpGC垃圾回收
最近在看别人代码,发现有这么一段//清理对象。
name = nullname 这个对象在执行到最后的时候给赋值null了。
我记得如果说
string name = "名字";
这样其实是初始了两个变量吧,一个是name,一个是存放"名字"的地方。
那这样写 name=null,如果说是释放了,岂不是就释放了一个地方么?
还有这样写name=null 会提高系统效率么?在Csharp中。在C++中必须要释放吧?
还请大侠来指点指点。谢谢! :)CsharpGC垃圾回收
估计人家只是代码需要暂时赋值为null 楼主你想多了。
可以放在析构函数里面
控制一旦超出局部变量的使用范围,会立即出栈被回收的
如果name是SqlConnection或者Win32中的非托管资源,直接name=null,不但不能提高效率,反而可能会导致内存泄漏。
必须Dispose等方式显示释放,垃圾回收器无法回收它们的。