您好,我来澄清一下,如果我有以下内容:
using (Object1) {
create Object2
}
// bookmark1
Object2会和Object1一起在bookmark1被销毁吗? Object2是StringReader,Object1是MemoryStream。
您好,我来澄清一下,如果我有以下内容:
using (Object1) {
create Object2
}
// bookmark1
块结束时,两个对象都不会被销毁。
Object1将被处置(disposed),这是一个不同的概念;Object2则不会有任何变化。
两个对象都将被收集,并且可能在稍后进行终结。垃圾回收是不确定性的 - 您无法依赖于它何时发生。
有关详细信息,请参见MSDN上的IDisposable。
try
{
Brush b = new SolidBrush(Color.Red);
}
finally
{
b.Dispose();
}
using (Object1 obj1 = new Object1(), Object2 obj2 = new Object2())
{
// Do something with obj1 & obj2
}
详情请参见MSDN关于使用的页面。
object2不会随着object1一起被销毁(释放)。然而,使用语句会创建一个单独的作用域块,因此object2在此时确实超出了作用域。它的释放只是不确定的。
另外,如果object2也是IDisposable,你可以这样做:
using (object1)
using (object2)
{
} // bookmark1