Or *_*r A 5 c# memory garbage-collection idisposable
我有一个愚蠢的问题,但我想在这里听到社区.
所以这是我的代码:
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,它有什么不同于:
(FtpWebResponse)request.GetResponse();
return true;
Run Code Online (Sandbox Code Playgroud)
一般哪个更好?哪个就GC而言?为什么?
Rex*_*x M 11
第一个更好,但不是GC.WebResponse实现IDisposable,因为它需要被释放,如网络连接,存储流等资源IDisposable到位,因为你作为消费者,知道你什么时候这个对象,你打电话Dispose来通知您已处理完毕的类它,它可以自由清理.
这个using模式真的只是Dispose在引擎盖下打电话.例如,您的第一个示例实际编译为:
FtpWebResponse response = (FtpWebResponse)request.GetResponse()
try
{
}
finally
{
((IDisposable)response).Dispose();
}
return true;
Run Code Online (Sandbox Code Playgroud)
这与垃圾收集器分开.一个类也可以清理终结器中的资源,它可以从GC调用,但是你不应该依赖它来解决这个问题有两个原因:
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |