c# - 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 中工作有误?
解决方案
推荐阅读
- asp.net-core - 如何用 RazorPages 路由替换 MVC HomeController/Index 重定向?
- rest - 如何在 nginx 中为 proxy_pass 指令更改 $request_method 参数?
- c# - 如何使用嵌入式浏览器在 HTTP 请求中指示应用程序的名称
- java - 如何让我的程序检测特殊字符,特别是“ !@#$%^&* ”?
- javascript - Firebase Firestore 复合查询变体
- regex - 在匹配字符串之前包括变量上的正则表达式
- kubernetes - Kubernetes:readinessProbes 失败,但 livelinessProbe 使用相同的设置成功
- asp.net - ASP.NET Core 2.1 无法从生产中的 Razor 文档访问 cookie
- android - 我的新应用程序只有主要活动及其 acivity_main 布局,但在移动设备上运行时崩溃
- c - 分配给本地堆栈变量的堆栈偏移量是否曾经被重用过,例如,以防它失效或超出范围?