ReSharper 2025.2 Help

代码检查:处理已被 'using' 语句捕获的变量

如果一个实现了 IDisposable 的类型的变量在 using 语句中声明,或使用 using 声明,您不应在此变量上调用 Dispose()。 当退出相应的代码块时, Dispose() 将自动在其包含的对象上调用。 通过手动调用 Dispose() ,您实际上是两次调用了此方法,这可能导致意外行为或错误。

using (var disposable = new MyDisposable()) { // Warning disposable.Dispose(); }

此检查不仅报告在 Dispose() 上下文中调用 using 的情况,还报告处理资源释放的自定义方法。 此类方法应使用 [HandlesResourceDisposalAttribute]标记,来自 JetBrains.Annotations

class DisposalSample { void HandleDisposal( [HandlesResourceDisposal] MyDisposable resource) { // Custom disposal implementation } void Test() { using (var disposable = new MyDisposable()) { // Warning HandleDisposal(disposable); } } }
最后修改日期: 2025年 9月 27日