如何在函数中返回一个可被释放的对象以确保它可以在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() ){ /* ... */ }
编辑:发布了一个与此类似的更普遍的问题,以避免混淆答案和讨论。