首页 > 解决方案 > VS警告:由'disposable'创建的一次性对象永远不会被释放,为什么?

问题描述

我正在编写一个 C# 应用程序,并且偶然发现了一些让我不确定它是否是 Visual Studio 错误,或者我的知识不正确的东西。

罪魁祸首是 try/catch 的“catch”部分内的 using 语句,其中 Visual Studio 2019 显示一个警告,即一次性对象将不会被释放:

'MakeMeSomeDisposableObject()'s 创建的一次性对象永远不会被释放

在 catch 之外使用的相同语句没有显示警告消息。

这是我正在谈论的一个例子:

try
{
    SomeMethodThrowingExceptions();
}
catch
{
    using(var someDisposableObject = MakeMeSomeDisposableObjects())
    {
        someDisposableObject.SaveTheWorldFromException();
    }
}

我的理解是,在出现异常的情况下-一次性对象将拯救世界并在完成工作后由于 using 语句而被丢弃。然而,Visual Studio 不这么认为并显示警告消息,但也显示没有修复 - 这是 VS 错误还是我对 using 语句如何在 catch 中工作有误?

标签: c#visual-studioidisposable

解决方案


推荐阅读