C#中的IDisposable

0 c# idisposable

我编码如下:

class myclass : IDisposable
{
    public int a;

    public void Dispose()
    {
        GC.SuppressFinalize(this);
    }
}
class Program
{
    static void Main(string[] args)
    {
        myclass cl = null;
        using (myclass n = new myclass())
        {

            n.a = 10;
            cl = n;
        }

        int a = cl.a;// statement 1
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望语句1不起作用,因为cl对象已被释放(n对象已释放).但它有效.那么n对象是否真的在声明1中发布了?

SLa*_*aks 7

没有办法明确"释放"托管对象.

Dispose()是一个完全普通的函数,旨在释放非托管资源.
调用它根本不会影响GC.