コード検査: 空のデストラクタ
空のデストラクタには、オブジェクトがガベージコレクタによって回収される前に完了しなければならない特別なアクションは含まれていません。そのようなデストラクタはガベージコレクタが自動的にすることに何も追加しません。それはオーバーヘッドを引き起こすだけです。
C# では、クラスにファイナライザーを提供するために、Finalize メソッドのオーバーライドの代わりにデストラクターが使用されます。クラスにデストラクターがある場合、ガベージコレクターは対応するオブジェクトにファイナライズのマークを付けます。オブジェクトごとに、いわゆるファイナライズキューにエントリを追加します。デストラクターの呼び出し時に、ガベージコレクターが呼び出されます。ガベージコレクターはファイナライゼーションキューを分析し、ファイナライザーを実行します。デストラクターが空の場合、ファイナライザーにはユーザー定義の命令が含まれていないため、ファイナライゼーションキューとファイナライザーを使用したすべての操作は不要であり、リソースを消費するだけです。
ReSharper は、読みやすさとコードのパフォーマンスの両方を向上させるために、空のデストラクタを削除することをお勧めします。
関連ページ:
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...
コード検査: クラスはインスタンス化されません (非公開アクセシビリティ)
このインスペクションは、ソリューションでオブジェクトが作成されなかったパブリッククラスとレコードを報告します。「型が使用されていない」問題とは異なり、このインスペクションによって報告される型には使用箇所があります。つまり、基本型として、メソッドまたは型パラメーターとして、初期化されていない変数宣言などで使用できます。さまざまな状況に応じて、いくつかの解決策が考えられます。クラスに静的メンバーと定数フィールドのみが含まれている場合は、静的にすることを検討してください。クラスが基本クラスであるか、型...