出于方便和安全的原因,我想使用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 语句只是扩展为普通语句,try finally Dispose()
这应该可以正常工作,但是幕后是否发生了更多事情,或者有可能在未来的 .Net 版本中不起作用?