如果对象是在方法中声明的,是否使用 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
}