25/12/30 09:20:47.48 avV+Pfo+0.net
>>564
代わりにAI様に聞いてやったぞ
ご質問ありがとうございます。
結論から申し上げますと、「自分で Dispose / Close すべき責務があるかどうか」だけ見れば十分です。
• マネージドオブジェクト
IDisposable を実装していて、Dispose() を呼ぶ責任があなたのクラスにあるもの
→ disposing == true のときに Dispose() する
• アンマネージドリソース
IntPtr、OSハンドル、ネイティブメモリなど GCが管理できない実体
→ disposing に関係なく必ず解放する
逆に言えば
• string や List<T> → 何もしない
• 他人から渡された Stream → 勝手に Dispose しない
• new して保持してる Stream → マネージド側で Dispose
「型」ではなく「所有権」が判断基準です。
これが分からない設計なら、設計が悪いだけです。