【发布时间】:2010-11-18 22:02:03
【问题描述】:
如何在我的函数中返回一次性对象以确保它在 using 块中正常工作?在我的函数中,我想对一次性对象采取行动并考虑错误,这使这变得复杂。
到目前为止,我有类似于以下代码的内容:
DBHandle GetDB()
{
/* // I can't do this, because the using block would dispose of my object within this function
using( var db = DatabaseObj.GetHandle() )
{
db.Open();
return db;
}
*/
var db = DatabaseObj.GetHandle();
try
{
db.Open();
return db;
}
catch (Exception ex)
{
db.Dispose();
throw ex;
}
}
// In other code:
using( var obj = GetDB() ){ /* ... */ }
编辑:Posted a more general question 与此类似,以免混淆答案和讨论。
【问题讨论】:
-
我认为我对您的更一般性问题的回答总结得很好,您上面的代码对我来说看起来是正确的。
标签: c# idisposable using-statement