如果对象是在方法中声明的,是否使用 dispose 对象
Does using dispose objects if they are declared in a method
假设我在一个方法中创建了一个一次性对象,但我将在该方法外调用一个 using。那么这个方法是不是什么都处置了?
using(DbConnection connection = new DbConnection("myConnection"){
SomeMethod();
}
public void SomeMethod(){
var stream = new MemoryStream()
// ... Do something with the stream ...
}
在'SomeMethod'中创建的流是否被销毁了?
不,不会。只有在 using
语句中明确指定的引用才会被释放。
在这种情况下,只有 connection
会在 代码执行离开 using 块后 被释放。您还需要将 var stream = ..
包装在 using 块中,或手动处理它。
当我们使用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
}
假设我在一个方法中创建了一个一次性对象,但我将在该方法外调用一个 using。那么这个方法是不是什么都处置了?
using(DbConnection connection = new DbConnection("myConnection"){
SomeMethod();
}
public void SomeMethod(){
var stream = new MemoryStream()
// ... Do something with the stream ...
}
在'SomeMethod'中创建的流是否被销毁了?
不,不会。只有在 using
语句中明确指定的引用才会被释放。
在这种情况下,只有 connection
会在 代码执行离开 using 块后 被释放。您还需要将 var stream = ..
包装在 using 块中,或手动处理它。
当我们使用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
}