JetBrains Rider 2026.1 Help

コードインスペクション: 'using' ステートメントですでにキャプチャされた変数の破棄

IDisposable を実装する型の変数が using ステートメントまたは using 宣言で宣言されている場合、この変数に対して Dispose() を呼び出さないでください。 Dispose() は、対応するブロックが終了すると、それに含まれるオブジェクトに対して自動的に呼び出されます。 Dispose() を手動で呼び出すと、実質的にこのメソッドを 2 回呼び出すことになり、予期しない動作やエラーが発生する可能性があります。

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

このインスペクションは、 using コンテキストでの Dispose() の呼び出しだけでなく、リソースの破棄を処理するカスタムメソッドも報告します。 このようなメソッドには、 JetBrains.Annotations から [HandlesResourceDisposalAttribute] のマークを付ける必要があります。

class DisposalSample { void HandleDisposal( [HandlesResourceDisposal] MyDisposable resource) { // Custom disposal implementation } void Test() { using (var disposable = new MyDisposable()) { // Warning HandleDisposal(disposable); } } }
2026 年 6 月 12 日