using
利便性と安全性の理由から、プールから/へのオブジェクトの割り当てと解放にステートメント を使用したいと思います
public class Resource : IDisposable
{
public void Dispose()
{
ResourcePool.ReleaseResource(this);
}
}
public class ResourcePool
{
static Stack<Resource> pool = new Stack<Resource>();
public static Resource GetResource()
{
return pool.Pop();
}
public static void ReleaseResource(Resource r)
{
pool.Push(r);
}
}
そしてプールへのアクセス
using (Resource r = ResourcePool.GetResource())
{
r.DoSomething();
}
using
乱用とDispose()
スコープ処理に関するトピックをいくつか見つけましたが、それらのすべてに が組み込まれていusing (Blah b = _NEW_ Blah())
ます。
ここでは、using スコープを離れた後にオブジェクトを解放するのではなく、プールに保持します。
using ステートメントが単純に単純に展開される場合、これは正常に機能するtry finally Dispose()
はずですが、舞台裏でさらに何かが起こっているのでしょうか、または将来の .Net バージョンでこれが機能しなくなる可能性はありますか?