首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#方法返回未使用的Disposable

C#方法返回未使用的Disposable
EN

Stack Overflow用户
提问于 2017-01-19 03:34:51
回答 1查看 317关注 0票数 3

我有一个方法Foo返回一个IDisposable对象。通常,当调用此方法时,将使用返回值。但是,在这种情况下,我需要调用方法,但不需要返回值。立即调用Dispose是正确的做法吗?如果是的话,我在下面做哪一项是否重要呢?

代码语言:javascript
复制
Foo().Dispose();

代码语言:javascript
复制
using(Foo())
{
}

或者只是

代码语言:javascript
复制
Foo();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-19 03:46:22

如果一个对象实现了IDisposable,那么当您完成该对象时,您应该调用Dispose方法。Dispose的目的是释放在GC (垃圾收集器)循环(或GC未涵盖的内容)之前不应该保存的资源。当GC检测到对象不再被使用时,它将调用对象终结器,但无法预测何时会发生这种情况。因此,创建IDisposable接口是为了让程序员能够显式地处理对象的资源(它不删除对象,GC仍然这样做)。

我想我更喜欢

代码语言:javascript
复制
Foo().Dispose();

但这并不重要(前两者之间)。如果您只使用"Foo();“,那么您就不尊重Dispose模式,这将是不正确的。您可能希望确定对象正在创建的资源类型,也许有一种方法可以获得所需的信息,而无需创建需要处理的对象。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41733261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档