首页 > 解决方案 > 如何以另一种方法正确处理本地创建的对象?

问题描述

所以我有一个实现 IDisposable 的类,并且我有几个方法(在另一个类中)遵循以下模式:

public void SomeMethod()
{
    DisposableObject disposableObject = new DisposableObject();

    // Do some stuff with the object

    SomeOtherMethod(disposableObject);
    disposableObject.Dispose();
}

虽然所有这些方法都做不同的事情,但它们都SomeOtherMethod在最后调用,这会在不再需要一次性对象之前对一次性对象做更多的事情。当我disposableObject.Dispose();进入SomeOtherMethod时,Visual Studio 给我一条消息说:“使用推荐的处置模式来确保由‘new DisposableObject()’创建的对象被处置在所有路径上:使用语句/声明或尝试/最终

无论我是否将一次性对象传递给SomeOtherMethod使用ref关键字,都会出现此消息。

我的问题是,只要SomeOtherMethod调用Dispose()它,该对象就会被处理吗?我假设它会,并且 Visual Studio 继续发送消息只是因为它不“知道”在后续方法中该对象发生了什么,但我很想得到一些确认!

标签: c#idisposable

解决方案


它可能被释放或不被释放,取决于执行是否会到达Dispose调用的事实,这是因为可以在调用之前抛出异常Disposetry finally通过关键字显式或隐式使用构造using可确保在任何情况下都会调用它,这就是 VS 向您发出警告的原因。


推荐阅读