C# 方法 returns 未使用的一次性方法
C# Method returns Disposable that is not being used
我有一个方法 Foo
return 是一个 IDisposable
对象。调用此方法时,通常会使用 return 值。但是,在这种情况下,我需要调用方法但不需要 return 值。立即调用 Dispose
是正确的做法吗?如果是这样,我做以下哪一项有关系吗?
Foo().Dispose();
或
using(Foo())
{
}
或者只是
Foo();
如果一个对象实现了 IDisposable,那么您应该在使用完该对象后调用 Dispose 方法。 Dispose 的意思是释放不应该被持有的资源,直到 GC(垃圾收集器)周期(或 GC 未涵盖的事物)。当 GC 检测到不再使用对象时,它会调用对象终结器,但无法预测何时会发生。因此,创建了 IDisposable 接口,以便程序员可以显式处理对象的资源(它不会删除对象,GC 仍然会删除)。
我想我更喜欢
Foo().Dispose();
但这并不重要(在前两者之间)。如果您只使用 "Foo();" 那么您就没有遵守不正确的 Dispose 模式。您可能想尝试确定对象正在创建哪种资源,也许有一种方法可以在不创建需要处理的对象的情况下获取所需的信息。
我有一个方法 Foo
return 是一个 IDisposable
对象。调用此方法时,通常会使用 return 值。但是,在这种情况下,我需要调用方法但不需要 return 值。立即调用 Dispose
是正确的做法吗?如果是这样,我做以下哪一项有关系吗?
Foo().Dispose();
或
using(Foo())
{
}
或者只是
Foo();
如果一个对象实现了 IDisposable,那么您应该在使用完该对象后调用 Dispose 方法。 Dispose 的意思是释放不应该被持有的资源,直到 GC(垃圾收集器)周期(或 GC 未涵盖的事物)。当 GC 检测到不再使用对象时,它会调用对象终结器,但无法预测何时会发生。因此,创建了 IDisposable 接口,以便程序员可以显式处理对象的资源(它不会删除对象,GC 仍然会删除)。
我想我更喜欢
Foo().Dispose();
但这并不重要(在前两者之间)。如果您只使用 "Foo();" 那么您就没有遵守不正确的 Dispose 模式。您可能想尝试确定对象正在创建哪种资源,也许有一种方法可以在不创建需要处理的对象的情况下获取所需的信息。