ReSharper 2026.1 Help

コードインスペクション: 空のデストラクター

空のデストラクターには、ガベージコレクターがオブジェクトを回収する前に完了すべき特別なアクションは含まれていません。 このようなデストラクターは、ガベージコレクターが自動的に行う処理に何も追加せず、単にオーバーヘッドを生じさせます。

C# では、デストラクターはクラスにファイナライザーを提供するために、 Finalize メソッドのオーバーライドの代わりに使われます。 クラスにデストラクターがある場合、ガベージコレクターは該当するオブジェクトをファイナライズ対象としてマークし、それぞれのオブジェクトについてファイナライゼーションキューにエントリを追加します。 デストラクターが呼び出されると、ガベージコレクターが起動し、ファイナライゼーションキューを解析してファイナライザーを実行します。 デストラクターが空の場合、ファイナライザーにはユーザー定義の命令が含まれないため、ファイナライゼーションキューとファイナライザーに関するすべての操作は不要となり、単にリソースを消費するだけです。

ReSharper は、コードの可読性とパフォーマンスの両方を向上させるために、空のデストラクターを削除することを推奨します。

2026 年 6 月 12 日