0

継承したばかりのvb.netコードを見ていますが、元の開発者がなぜこれを行うのか理解できません。

基本的に、各「ドメイン」クラスはプロパティのコレクションです。そして、それぞれが IDisposable.Dispose を実装し、Finalize() をオーバーライドします。基本クラスがないため、それぞれが Object を拡張するだけです。

Dispose は、各プライベート変数を Nothing に設定するか、プロパティが別のドメイン オブジェクトである場合は _private.Dispose を呼び出します。破棄された状態を追跡するプライベート var があり、Dispose の最後のものは GC.suppressFinalize(Me) です。

Finalize は Me.Dispose と MyBase.Finalize を呼び出すだけです。

これに何かメリットはありますか?害はありますか?管理されていないリソースも、データベース接続もありません。これを必要とするものは何もありません。

4

4 に答える 4

3

それはVB6のパターンだと思います。

おそらく、これらのパターンが広く理解されていなかった.NETの初期の頃に、その男はVB6から直接来ていたに違いありません。

メンバーが Withevents としてマークされている場合、Dispose の呼び出しで内部参照を何も設定しないと便利な場合もあります。そうしないと、収集されていないオブジェクトがイベントを処理する必要がなくなったときに、イベントを処理するリスクがあります。

于 2009-04-20T15:03:01.933 に答える
0

私がこれについて見ることができた唯一の理由は、これはせいぜい疑わしいですが、これらのものが「食物連鎖」の上位で作成され、処分されており、これらのドメインクラスの一部がいずれかを持つ可能性がある場合です。ある時点での制限された、または管理されていないリソース。

それは大ざっぱです...誰かが管理されていないバックグラウンドから来て、メモリを管理する.NETに相当するものを探していて、IDisposableインターフェイスに出くわしたようです。

于 2009-04-20T15:07:18.960 に答える
0

これは、特に管理されていないリソースとデータ接続がなければ、まったく必要ないように思えます。

たまたまサニタイズしてコードを投稿できれば、もう少し洞察を得ることができるかもしれませんが、現実的にはその必要性はわかりません.

于 2009-04-20T15:00:20.333 に答える
0

オブジェクトのサイズ、およびそれらが作成/破棄される頻度に応じて、GC をできるだけ早く実行できるようにする必要があります。

このパターンは他のプロジェクトで使用された可能性があり、最初に使用された理由を理解することなく続行されます。モンキー・ガーデナーズ

于 2009-04-20T15:04:12.650 に答える