• ベストアンサー

オブジェクトの廃棄

VB6やC++の時はオブジェクトを使い終わったら破棄するのが当然でした。 Objsys=Nothingみたいな代入をよくやっていました。 VB.Netからはあまり意識されなくなっているのでしょうか。 インスタンスを生成してもそのままのことが多いような気がします? 例えば以下のgraphicsのインスタンスなどです。どうなっているのでしょう。 Dim g As Graphics = PictureBox1.CreateGraphics

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

オブジェクト自体は,適当なタイミングでCLRがGC時に破棄してくれます。 ただし,Graphicsのようなオブジェクトは論理的な破棄タイミングを制御したいため,IDisposableインターフェースを実装しています。 このインターフェースを実装しているオブジェクトは,Disposeメソッドを呼び出すことで論理的な破棄が可能になります。 一応,IDisposableを実装する場合はFinalizeメソッドをオーバーライドすることが推奨されるため,GC時に破棄はしてくれますが……。 なお,Disposeを呼び出すコードはUsing文によって強制することが出来ます。 基本的に,Disposeを直に呼び出すのではなく,可能であればUsing文を使うようにすることが推奨されます。 # Using相当のTry - Finallyをきっちり書くのは慣れないと難しいかと。

flyingbee
質問者

お礼

GCという仕組み、確かJAVAにありましたが、こういう使い方してたんですね。 自分で触るまでは実感できなかったです。^^; エラー処理は確かに気を使ったというかgoto文で全部一ヶ所にとばしてました。 disposeは実装した方がいいみたいですね。 色々と参考になりました。

その他の回答 (2)

回答No.3

写真見えますか? なかなかベストアンサーがもらえない私です。

flyingbee
質問者

お礼

ご免なさい。ちょっと見えにくいです。 スクリーンショットを加工した方が早くないですか? ご丁寧に有り難うございました。

回答No.2

ピクチャーボックスのペイントイベントパンドラに直接コードを書く場合は、 必要無しです。

flyingbee
質問者

お礼

ご回答有り難うございます。 解放はGCが自動でやってくれているということのようですね。 意図的に解放したい場合はdisposeを使うと。

関連するQ&A

専門家に質問してみよう