Out of Memory

ごめん、忘れてた。

目次

Blog 利用状況

ニュース

2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

aetos

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

Microsoft MVP for Windows SDK July 2007 - February 2008, Microsoft MVP for Visual C++ February 2008 - June 2009
Microsoft MVP for Windows SDK
July 2007 - February 2008
Microsoft MVP for Visual C++
February 2008 - June 2009

アクセサリ

あわせて読みたい

e-Words

アフィリエイト

記事カテゴリ

書庫

日記カテゴリ

【短期集中連載】IDisposable:第一回「前提編」

何回か、.NET Framework が産み出した鬼子、「IDisposable」について取り上げてみたいと思う。
まったく厄介なインターフェイスである…。

第1回は「前提編」。今後の連載を進める上での下地を定義する。
なお、ここで登場する用語は、本連載のために便宜的に定義するものであり、一般的に通用するものではないことに注意されたい。

IDisposableは、ガベージコレクタが面倒を見てくれない「アンマネージリソース」を解放するためのインターフェイスである。
IDisposableを実装しているオブジェクトを「Disposableオブジェクト」と呼ぶことにしよう。
だが、Disposableオブジェクトがすべて、アンマネージリソースを保持しているとは限らない。
以下では、Disposableオブジェクトを3つに分類する。

1:直接型
アンマネージリソースへのポインタやハンドルを、メンバに直接保持しているオブジェクト。
2:間接型
自身では直接アンマネージリソースを保持していないが、他のDisposableオブジェクトをメンバに持っているオブジェクト。
自身では直接アンマネージリソースを保持していないが、他のDisposableオブジェクトから派生しているものもこれにあたる。
3:複合型
ポインタやハンドルも、他のDisposableオブジェクトも持っているオブジェクト。

囚人さんのblogでも何度か取り上げられているが、ここでも、Disposableオブジェクトの「所有者」という概念を意識してみよう。所有者とは、そのオブジェクトをDisposeする責任を持つオブジェクトのことだ。

次回は「『Disposableパターン』と『当たり前のこと』」、第3回は「例外安全性」をとり上げてみたい。

投稿日時 : 2007年3月27日 15:41

Feedback

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/03/27 15:59 とりこびと

はげしくワクテカしてますよ♪

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/03/27 19:10 渋木宏明(ひどり)

第3回辺りで SafeHandle (CriticalFinalizerObject) に触れて欲しいかも。

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/03/28 9:17 シャノン

> 第3回辺りで SafeHandle (CriticalFinalizerObject) に触れて欲しいかも。

今んとこ予定はないス。
気が向いたらやります。

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/03/28 11:06 渋木宏明(ひどり)

「3つの分類」だと、例えば Component 派生クラスがカバーしきれないと思う。

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/03/28 11:15 シャノン

直接アンマネージリソースを保持しているとも限らず、他のDisposableオブジェクトを保持しているとも限らず、そのくせDisposableなものってことですか?
#ぶっちゃけ、Disposeする必要がないくせに、デザイナに貼り付けたいからComponentなもの?

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/03/28 11:46 渋木宏明(ひどり)

>ぶっちゃけ、Disposeする必要がないくせに、デザイナに貼り付けたいからComponentなもの?

簡単に言うとそんな奴等。

Component が IDisposable 派生なので、アンマネージリソースを扱う予定が全くないとしても、Component 派生にした時点で IDisposable 派生となってしまいまする。

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/03/30 8:52 とりこびと

>直接アンマネージリソースを保持しているとも限らず、他のDisposableオブジェクトを保持しているとも限らず、そのくせDisposableなものってことですか?

これって継承元を辿っていってもどのクラスでも'意味的に' IDisposable である必要がないってことですか?
そうだとしたらなんで IDisposable を実装してるんだろう・・・。

私、なんか解釈間違ってますか?

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/03/30 9:15 シャノン

継承先がDisposableであるかもしれない時に、ポリモーフィックにDisposeするためだと思います。たぶん。

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/03/30 12:55 シャノン

第2話は明日。第3話はそのうち。それ以降は未定。

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/04/16 12:48 NyaRuRu

IDisposable は IEnumerable<T>.Dispose のように汎用コールバック化しつつあるので,

>IDisposableは、ガベージコレクタが面倒を見てくれない「アンマネージリソース」を解放するためのインターフェイスである。

は,もはや「一般的に通用するものではない」かもしれませんね.
となると,この出発点から始める議論自体,現状の .NET から離れた if の世界のものということになりそうですがその辺はどうなのでしょう?

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/04/16 12:52 NyaRuRu

Lady.BUG さんのこの記事などが参考になるかと.
http://d.hatena.ne.jp/ladybug/20050531

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/04/16 13:07 シャノン

> 現状の .NET から離れた if の世界のものということになりそうですがその辺はどうなのでしょう?

そう変わらないと思っています。
結局、後始末するものが「アンマネージリソース」とは限らなくなっただけの話であって、「何らかの後始末が必要」であることを示すインターフェイスだと拡大解釈すれば同じことではないでしょうか。
ただ、対象がアンマネージに限らなくなると、「可及的速やかに呼べ」とは言えなくなって来るかもしれません(GCに任せても問題ないことがあるかもしれません)が、アンマネージリソースも依然として対象に含まれる以上、「可及的速やかに呼ぶべきかどうか」は、相変わらずよくわからない話…というのは次回の記事で。

#IEnumerable もだんだん鬼子と化しつつあるような…

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/04/16 13:11 シャノン

> #IEnumerable もだんだん鬼子と化しつつあるような…

IDisposable にせよ IEnumerable にせよ、本来の意図と違う用途で使われ始めたり、拡張に拡張を繰り返していくと、どこかのタイミングで Microsoft が .NET Fx を放棄する未来が見え隠れしないでもない。

#かくして歴史は繰り返される…

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/04/16 13:18 シャノン

#どうでもいい話ですが、NyaRuRu さんの日記のタイトルが面白いんですけどw
> けしからん,実にけしからん発育ですな.
#とか。

# re: 【短期集中連載】IDisposable:第一回「前提編」 2007/04/16 14:10 NyaRuRu

>#どうでもいい話ですが、NyaRuRu さんの日記のタイトルが面白いんですけどw

本文を書くよりもタイトルを考える方に時間を使っていることもしばしば.
でも最近は結構手抜きだったり.

タイトル  
名前  
Url
コメント