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