假设定义了一个类:
class TestClass
{
MemoryStream s = new MemorySteam();
void DoStuff()
{
using (s = new MemoryStream())
{
// Do stuff
}
}
}
当using语句退出范围时,s
会发生什么?
编辑:
在另一种方法中使用s
会出现问题吗?
编辑2:在MemoryStream的第一个实例化中是否会有一个未被引用的对象?
答案 0 :(得分:7)
调用Dispose方法。 (请注意,它必须实现IDisposable接口,以便它可以保证Dispose可用)
The MSDN reference is pretty good IMO
Phil Haack also wrote an in depth article on this 7 years ago.
更新您的编辑
一旦方法调用了dispose方法,如果您尝试在方法范围之外使用它,则会引发异常。所以,是的,在使用之外引用它是不好的。 To be precise, it will throw an ObjectDisposedException
答案 1 :(得分:6)
调用Dispose方法。
答案 2 :(得分:2)
在objet上调用Dispose方法以清理此对象
我们调用using来清理非托管对象,因为它们没有被GC清理
GC没有关于非托管对象的信息,因此开发者必须清理