DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Disposeメソッドについて

環境/言語:[WinXP VB.NET2005]
分類:[.NET]

別サイトでDisposeのトピックを読みましたが理解できませんでした。
もともとVB6を使っていてつい最近VB.NETをやり始めたのですが、
メソッドやプロパティ等、VB6とはまったく違ったものになっているようです。

それでDisposeメソッドですが、具体的にはどのようなコードに
なるのかを知りたいと思っています。

実際にはFormのデザイン時に
   Dim Obj As New PictureBox
というようなコードを書いた場合、このObjは、上のコードを書いたFormが
Closeされるときにたとえば
   Obj.Dispose()
のようなコードが必要ということでしょうか?
あるいはFormがCloseされるときにObjは自動的に消滅してしまうものなのでしょうか?
よろしくお願いします。
■No18041に返信(VINさんの記事)
> というようなコードを書いた場合、このObjは、上のコードを書いたFormが
> Closeされるときにたとえば
>    Obj.Dispose()
> のようなコードが必要ということでしょうか?

自分で書く必要はないです。

> あるいはFormがCloseされるときにObjは自動的に消滅してしまうものなのでしょうか?

そうですね。
2006/10/29(Sun) 21:22:04 編集(投稿者)

> 自分で書く必要はないです。

Form.Controls.Add() してあれば、の話ですね。

Form.Controls.Add() してないとすると、PictureBox の特定のプロパティを参照して、内部的に実体化してしまった場合、ほったらかしにしたらリークします。
■No18043に返信(渋木宏明(ひどり)さんの記事)
> 2006/10/29(Sun) 21:22:04 編集(投稿者)
>
>>自分で書く必要はないです。
>
> Form.Controls.Add() してあれば、の話ですね。

みなさんありがとうございました。

要するに確保されたメモリがアプリケーションの終了時に
解放されるかどうかということなのでしょうが、この辺の
仕組みはどこかに詳しく解説されているのでしょうか?

それとも「クラス」という概念が生まれたときにすでに
詳しい説明なりが続出して、現時点ではそういうものを
既存のものとしてとらえなければならなくなっているのでしょうか?
> 要するに確保されたメモリがアプリケーションの終了時に
> 解放されるかどうかということなのでしょうが、

メモリではないし、終了時でもありません。

.NET では、クラスを new した時に必要になる「メモリ」は .NET のランタイムが管理しているので、通常、プログラマがその解放を気にする必要はありません。

「それ以外のブツ」をどうするか、という話です。

> この辺の仕組みはどこかに詳しく解説されているのでしょうか?

ヘルプで解説されています。

元スレでリンクが提示されていたように思います。

> それとも「クラス」という概念が生まれたときにすでに
> 詳しい説明なりが続出して、現時点ではそういうものを
> 既存のものとしてとらえなければならなくなっているのでしょうか?

違います。

OSが管理している「ブツ」を .NET の CLR のような実行環境を経由して扱う場合、「ブツ」の利用終了をOSにどうやって伝えるかの問題です。

元スレと同じような内容で議論をするなら元スレでやって欲しいと思うのですが、敢えて別スレを立てた意義は何なのでしょう?
> 元スレと同じような内容で議論をするなら元スレでやって欲しいと思うのですが、敢えて別スレを立てた意義は何なのでしょう?

すみません、元スレがあるというのは知りませんでした。
私が最初に書いたのは全然別サイトの議論のことでした。
元スレを探してみます。
> すみません、元スレがあるというのは知りませんでした。
> 私が最初に書いたのは全然別サイトの議論のことでした。
> 元スレを探してみます。

や、その別サイトのスレのことです>別スレ

別に「止めろ」と言っているわけではありませんが、疑問があるならあっちのスレにコメントすれば済む話なんじゃないでしょうか?
  • 題名: Re[7]: Disposeメソッドについて
  • 著者: はいこーん
  • 日時: 2006/10/30 17:10:38
  • ID: 18058
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
これ?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34497&forum=7

DOBON.NET | プログラミング道 | プログラミング掲示板