[英]Class Members and Using Statements
假设定义了一个类:
class TestClass
{
MemoryStream s = new MemorySteam();
void DoStuff()
{
using (s = new MemoryStream())
{
// Do stuff
}
}
}
发生什么s
当使用语句退出范围是什么?
编辑:在不同的方法中使用s
会有问题吗?
编辑2:在MemoryStream的第一个实例化中是否会有一个未被引用的对象?
它的Dispose方法被调用。 (请注意,它必须实现IDisposable接口,以便它可以保证Dispose可用)
菲尔·哈克(Phil Haack)7年前也写了一篇深入的文章。
更新到您的编辑
一旦方法调用了dispose方法,如果您尝试在方法范围之外使用它,它将抛出异常。 所以,是的,在使用之外引用它是不好的。 确切地说,它将抛出ObjectDisposedException
调用Dispose方法。
在objet上调用Dispose方法以清理此对象
我们调用using来清理非托管对象,因为它们不会被GC清理
GC没有关于非托管对象的信息,因此开发人员必须清理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.