析造函数,为何用断点和跟踪都看不到呢?如何查看析构函数的执行呢?
-----------------------------------------------------以下是一个最简单的程序,我想查看一下,析构函数是何时发生作用的,但是却看不到,加了跟踪,不打印信息,加了断点,也执行不到断点,这是为什么呢?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace p89_2
{
    public class parentclass
    {
        public parentclass()
        {
            Console.WriteLine("父类构造");
        }        public void print()
        {
            Console.WriteLine("父类中的print");
        }
        ~parentclass()
        {
            Console.WriteLine("父类析构");
        }
    }    class childclass:parentclass 
    {
        public childclass()
        {
            Console.WriteLine("子类构造");
        }
        ~childclass()
        {
            Console.WriteLine("子类析构");
        }        static void Main(string[] args)
        {
            childclass child = new childclass();
            child.print();
            Console.ReadKey();
        }
    }
}

解决方案 »

  1.   

    main执行完后才会释放。
    你按Ctrl+F5可以看到效果。
      

  2.   

    改为:public class parentclass
    {
        public parentclass()
        {
            Console.WriteLine("父类构造");
        }    public void print()
        {
            Console.WriteLine("父类中的print");
        }
        ~parentclass()
        {
            Console.WriteLine("父类析构");
        }
    }class childclass : parentclass
    {
        public childclass()
        {
            Console.WriteLine("子类构造");
        }
        ~childclass()
        {
            Console.WriteLine("子类析构");
        }    static void Main(string[] args)
        {
            childclass child = new childclass();
            child.print();
            child = null;
            GC.Collect();
            GC.WaitForFullGCComplete();
            Console.ReadKey();
        }
    }试试
      

  3.   

    托管类型,析构函数是GC负责调用的,在GC执行回收时,会调用回收对象的析构函数.//设为空对象,以便让GC回收
    child = null;
    //手动调用GC回收
    GC.Collect();
    //这是在framework2.0 sp1中新增的API,可等待回收完成
    GC.WaitForFullGCComplete();GC以静态类的方式提供了很多有用的API,楼主可以仔细研究一番
      

  4.   

            GC.Collect();
            GC.WaitForFullGCComplete();
    -------------------------------------------
    这两行代码什么意思呀?请指教。