私の生産コードでは、注入することができないので、静的なクラスを使わないでください。デフォルトの初期化を制御することはできません。最後に静的オブジェクトのデストラクタがないので、また、静的クラスのIDisposableを実装することはできません。したがって、静的クラスのようなサウンドは、アンマネージリソースのラッパーとしては決して良いことではありません。 シングルトンは、静的クラスの使用を直接置き換えるための良いソリューションですその場合は。しかし、私の質問は - なぜコンパイラは静的破壊をサポートしていないのですが、それではGCが静的オブジェクトとインスタンスの参照を追跡するのにどのような違いがありますか?なぜ静的デストラクタがないのですか?
4
A
答えて
7
"静的オブジェクト"のようなものはありません。しかし、アプリケーションドメインにロードされたすべてのタイプのすべての静的変数は、アプリケーションドメインがアンロードされるまでGCルートとして扱われます。
アプリドメインがアンロードされたときにやりたいことがある場合は、AppDomain.DomainUnloadとAppDomain.ProcessExitにサブスクライブすることができます。
2
静的デストラクタが必要な場合は、AppDomain.DomainUnload
イベントは機能しませんか?
関連する問題
- 1. 静的デストラクタ
- 2. System.Randomクラスが静的でないのはなぜですか?
- 3. なぜ静的フィールドがシリアル化されないのですか
- 4. なぜ「静的でない変数から静的なコンテキストから参照できないのですか?」
- 5. デストラクタが呼び出されないのはなぜですか?
- 6. なぜBindingAdapterが静的メソッドでなければならないのですか?
- 7. なぜ静的変数にアクセスできないのですか?
- 8. このコレクションイニシャライザが静的になるのはなぜですか?
- 9. CustomFieldSerializerに静的メソッドが必要なのはなぜですか?
- 10. Java:なぜThread.sleep()とyield()が静的なのですか?
- 11. モデルビュープレゼンター:なぜモデルは静的ですか?
- 12. 静的グローバル構造のデストラクタが呼び出されていない
- 13. 'マネージャ'クラスの 'getter'メソッドが静的でないのはなぜですか?
- 14. なぜ静的でないRxJSメソッドからの最新の?
- 15. Qtプロセスが静的デストラクタで終了するのを待つことができないのはなぜですか?
- 16. なぜデリゲートは静的でなければならないのですか?
- 17. この静的アサートが機能しないのはなぜですか?
- 18. 数学関数用の静的ライブラリがないのはなぜですか?
- 19. なぜ静的共有設定が保存されないのですか?
- 20. 静的な方法でリソースにアクセスできないのはなぜですか?
- 21. なぜ静的なコンポーネントをチェックインするのですか?
- 22. 明示的なデストラクタ
- 23. デストラクタがセグメンテーションフォルトを引き起こすのはなぜですか?
- 24. なぜ機能に「静的」な定義がありますか?
- 25. 静的クラスに非静的メソッドと変数を使用できないのはなぜですか?
- 26. java静的メソッドなぜ必要です
- 27. なぜ私的静的メソッドが存在するのですか?静的コンテキストで呼び出されていないのですか?
- 28. なぜJavaは決定論的なデストラクタを持っていないのですか?
- 29. デストラクタが呼び出されるのはなぜですか?
- 30. 静的イニシャライザで宣言の順序が重要なのはなぜですか?
+1くそっ...私はもう一度やや遅かった。 –
静的クラスはいくつかのリソース(ファイルハンドラ、pInvoke、何でも)をラップするのに便利な手段であるため、これらのファイルをクリーンアップするにはどうすればよいでしょうか? – dexter
@マックス:私は、とにかくそのような方法でリソースを包むことはありませんが、正直です。特にファイルハンドルはできるだけ早く処分するのが最善です。 –