繁体   English   中英

我是否必须处理我不使用的退回物品?

[英]Do I have to dispose of returned objects that I don't use?

我有以下代码:

WebRequest request = WebRequest.Create("ftp://myServer/myDirectory");
request.Method = WebRequestMethods.Ftp.MakeDirectory;
request.Credentials = new NetworkCredential("userName", "password");

request.GetResponse();

我是否必须处理WebRequest返回的WebResponse object ?

你应该。 using语句包裹,出scope时自动处理

using (var response = request.GetResponse())
{

}

至于必须处置,我会说不。 当 CLR 检测到没有对 object 的引用时,将安排 object 进行垃圾收集。 您可能遇到的问题是不能保证 object 及其属性会以正确的顺序被清除。 简单的对象/类,无论是 .NET 框架的一部分还是自定义对象/类都很少实现 iDisposable 接口。 如果一个对象/类实现了 iDisposable,您绝对应该调用 dispose 方法以确保正确处理清理工作,因为设计人员有一些迹象表明有必要以特定方式进行清理。 正如 Stecya 所说,包装在 using 块中是一种很好的方式,可以看到这是自动完成的。 您也可以使用 try/finally 块来实现相同的目的(在 finally 块中处理 object)。

是的你应该。 你是对的,这并不完全明显,通常你应该只 Dispose 你创建的对象(使用new ),而不是那些你从另一个组件中获取/借来的对象。

关键在WebRequest.Create()的名称和描述中,它是一个工厂方法,代表您创建某些内容,调用者(您)负责返回值。

当然,首选语法是using() {}块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM