类成员和使用语句

bri*_*uck 3 .net c#

假设定义了一个类:

class TestClass
{
    MemoryStream s = new MemorySteam();

    void DoStuff()
    {
        using (s = new MemoryStream())
        {
            // Do stuff
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

s当using语句退出范围时会发生什么?

编辑:s在使用其他方法时是否会出现问题?

编辑2:在MemoryStream的第一个实例化中是否会有一个未被引用的对象?

Jus*_*ony 7

它的Dispose方法被调用.(请注意,它必须实现IDisposable接口,以便它可以保证Dispose可用)

MSDN参考是非常好的IMO

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

更新到您的编辑

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


L.B*_*L.B 6

调用Dispose方法.

using Statement(C#参考)