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();只是强制执行垃圾回收 进行未被使用资源释放 即使你这样写
static void Main(string[] args) { Program objtest; using (Program obj = new Program())//我期待的是using的范围之外,obj就应该被GC回收了。 { objtest = obj; Console.WriteLine(obj.i); } Console.WriteLine(objtest.i);//没有问题,obj仍然存在 Console.ReadLine(); }