using statement

最近,C#とManaged DirectXを使って遊んでる.
そこで見つけたC#の面白い機能 using statement.

using (Font font1 = new Font("Arial", 10.0f))
{
    ...
}

スコープの範囲を超えるとfont1のDispose()を呼んでくれる.例外で飛ぶときも同じ.重たいオブジェクト作ったりして解放をGCに任せたく無いときに使える.
そんな用途で使うんだけど,これは解放だけじゃなくてスコープを抜けたときに他の特定の処理をさせるのに使える.finallyと違ってスコープを抜けて時点で行う処理をオブジェクトのDispose()に任せられる.C++のデストラクタと同じようなことができる.今度使ってみようと思う.
似たやつにPythonのwith statementってのがあってこれと同じ使い方が出来そうなのでうれしいなと思った.