如果在方法中声明它们,则使用dispose对象

时间:2017-05-29 06:00:10

标签: c# garbage-collection dispose using

假设我在一个方法中创建一个一次性对象,但我将调用该方法中的一个使用。那么一切都按照这种方法处理了吗?

using(DbConnection connection = new DbConnection("myConnection"){

   SomeMethod();
}


public void SomeMethod(){
    var stream = new MemoryStream()
    // ... Do something with the stream ... 
}

是否在' SomeMethod'中创建了流。处置?

2 个答案:

答案 0 :(得分:2)

不,它不会。只会处理using语句中明确指定的引用。

在这种情况下,在代码执行离开using块之后,只有connection将被处理。您还需要将var stream = ..包装在使用块中,或手动处理它。

答案 1 :(得分:0)

当我们使用Using关键字时,它将调用在其中创建的对象的dispose方法 using(Form m =new Form())括号。所以请记住,如果要在{}

定义的范围内进行处理,我们必须手动处理

示例:

using(Form test =new Form())//test object will disposed by using at end of scope 
{//Scope start

//code written here or created new object are not disposed by using

//Scope End
}