usingに関するメモ

| コメント(0) | トラックバック(0)

C#で勝手にDisposeしてくれる方のusing。

例外出てもDispose呼んでくれるので便利だけど、気になって確認したのでメモ。

  • using(A hoge1 = new A(), hoge2 = new A()) { } と、
    using(A hoge1 = new A()) {using(A hoge2 = new A()) { } } は処理順も同じなので、安心して使ってよい。
  • usingで対応できるのは、変数に代入できた場合のみ。
    たとえば、using(A hoge = new A()) で、Aのコンストラクタ処理で例外発生した場合にはhoge.Dispose()は呼ばれない。

まぁ、当たり前っちゃー当たり前だけど、後者は重要な気がする。
どんな場合でもDispose呼んでくれると思って、コンストラクタ等で例外出しまくると、意図しないことになる可能性があるってことだ。

おまけ。
IDisposable実装しながら、Disposeを隠ぺいしちゃってるクラスがあるんだけど、そういう場合に。

using(IDisposable disp = hogehoge as IDisposable) { }

これで、IDisposable実装していれば、Disposeしてくれる。
意外に便利。

トラックバック(0)

トラックバックURL: http://blog.fne.jp/mt/mt-tb.cgi/191

コメントしちゃいなよ

    

サイトカウンタ

Total: 211,632 Hits, (Recent24Hours: 0 Hits)
~ Since 2010/01 ~

埋め込みツイッター

取得失敗;;
Now: 2024/04/20 16:30:34 JST

このブログ記事について

このページは、ふぅみんが2010年5月21日 12:00に書いたブログ記事です。

ひとつ前のブログ記事は「証明書ストアへのアクセス2」です。

次のブログ記事は「「SEG CLIP」マジやばい」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

2024年2月

 日   月   火   水   木   金   土 
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29    

埋め込みQRコード