在不使用退出方法的情况下处理所有IDisposables?

时间:2018-01-05 10:24:29

标签: c# idisposable

也许我太懒了,但是在方法中嵌套using会使方法变得复杂且难以理解。是否有任何方法可以在由于异常退出方法时自动处理在方法中创建的所有IDisposable个对象?

PS。感谢您的反馈。我现在知道现在没有这样的功能。但是,理论上,以下假设的语法是合理的吗?

void SomeMethod()
{
     autodispose var com = new SQLCommand();
     ...
     autodispose var file = new FileStream();
     ....
     autodispose var something = CreateAnObjectInAMethod(); 
     ....
}

出于任何原因退出方法时,所有三个对象都会自动处理。

1 个答案:

答案 0 :(得分:6)

不,但你可以整理一下......

此...

using (var conn = new SqlConnection("blah"))
{
    using (var cmd = new SqlCommand("blah"))
    {
        using (var dr = cmd.ExecuteReader())
        {

        }
    }
}

...变为

using (var conn = new SqlConnection("blah"))
using (var cmd = new SqlCommand("blah"))
using (var dr = cmd.ExecuteReader())
{

}