繁体   English   中英

类成员和使用语句

[英]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可用)

MSDN参考是非常好的IMO

菲尔·哈克(Phil Haack)7年前也写了一篇深入的文章。

更新到您的编辑

一旦方法调用了dispose方法,如果您尝试在方法范围之外使用它,它将抛出异常。 所以,是的,在使用之外引用它是不好的。 确切地说,它将抛出ObjectDisposedException

调用Dispose方法。

using Statement(C#参考)

在objet上调用Dispose方法以清理此对象

我们调用using来清理非托管对象,因为它们不会被GC清理

GC没有关于非托管对象的信息,因此开发人员必须清理

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM