日期:2014-05-17  浏览次数:20941 次

我在Dispose里面调用了GC.Collect(),为什么对象还存在?
我定义从IDisposable继承的类,Dispose函数里面调用了GC.Collect。但是我发现using它之后,该object仍然存在,似乎并么有被销毁。这是为什么?

namespace cs_ConsoleApplication1
{
    class Program : IDisposable
    {
        public void Dispose()
        {
            GC.Collect();
        }
        public int i = 2;
        static void Main(string[] args)
        {
            Program obj = new Program();
            using (obj)//我期待的是using的范围之外,obj就应该被GC回收了。
            {
                Console.WriteLine(obj.i);
            }
            Console.WriteLine(obj.i);//没有问题,obj仍然存在
        }
    }
}

求解释!

------解决方案--------------------
你的obj在using外呢,都没搞明白using怎么用

            using (DataTable dt = new DataTable())
            {
            }

------解决方案--------------------
你obj的初始化在using之后外了,你应该这样使用:

using(Program obj =new Program())
{}

------解决方案--------------------
to 楼上   看来是我理解错了
to 楼主   
GC.Collect();只是强制执行垃圾回收 进行未被使用资源释放
即使你这样写