2007年07月10日

StreamWriter

   このエントリーをはてなブックマークに追加 Clip to Evernote
.NET Framework の System.IO.StreamWriterって、Disposeメソッドを持っているにも関わらず、IDisposableインターフェースじゃないんですよね。

何でだろう?
単なるバグでしょうか?

追記(訂正)7/12
StreamWriterは、ちゃんと IDisposableインターフェースでした。m(_ _)m
いったい、何を勘違いしていたんでしょうか?

さらに追記 7/12 21:42
StreamWriterを使ったソースを見てみると、

internal sealed class MySample : IMySample, IDisposable {
private StreamWriter _writer;

public FileStatusManager() {
...
_writer = new StreamWriter(filename, true);
}

public void Dispose() {
_writer.Dispose();
}
}


※ sealed なのd、DisposeはこれでOK.

って書いてあって、usingを使うようなコードじゃない。
他のソースで、Disposeメソッドを使っているところを検索してみたけど、
みんな、上記のような使いばかりで、
  Xxxx xx = new Xxxx();
...
xx.Dispose();


のように書いている箇所はなかった。

なんで、あんな勘違いをしたのか、良く思いだせない...



この記事へのコメント
StreamWriter の基底クラスである TextWriter が IDisposable 派生なので、StreamWriter も IDisposable を受け継いでるはずですが?
Posted by 渋木宏明(ひどり) at 2007年07月12日 06:29
StreamWriterを usingで囲んだらコンパイルエラーになったので、この記事を書いたのですが、あれ、今やったらエラーになりませんね。
たしかに、IDisposableを実装してますね。
何かとてつもない勘違いをしたようです。
記事を後で訂正しときます。
うーーん、完全に頭が膿んでる<自分
Posted by Gushwell at 2007年07月12日 09:24
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50910619