C# 构造函数和析构函数

 

构造函数和析构函数是C#类中的一块,具体的作用和定义,百度,这里只用代码说一下一些具体的区别。

 

    public class ABC //一个随意的自定义类
    {
        private double a;
        public double A
        {
            get { return a; }
            set
            {
                a = value;
                Console.WriteLine("A={0}", a);
            }
        }
        public ABC()
        {
            Console.WriteLine("构造函数ABC被触发");
        }
        ~ABC()
        {
            Console.WriteLine("构析函数ABC~被触发");
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {

            ABC _abc;

            Console.WriteLine("A有了,按任意键初始化A");
            Console.ReadLine();

            _abc = new ABC() { A = 12 };//初始化对象并赋一个值




            Console.WriteLine("按任意键,清除A的值");
            Console.ReadLine();


            _abc = null;//释放A所占的内存


            if (_abc == null)
                Console.WriteLine("A==null");
            else
                Console.WriteLine("A的值为:{0}", _abc.A);
            Console.WriteLine("按任意键,回收A");
            Console.ReadLine();


            GC.Collect();//启动垃圾回收机制,回收不需要的对象A
            Console.ReadLine();
        }
    }

上述代码说明:

1.构造函数在类实例化的时候被触发

2.析构函数在类被回收的时候触发

    class Program
    {
        static void Main(string[] args)
        {

            Third third = new Third();
            third = null;
            GC.Collect();

            Console.ReadLine();
        }
    }

    public  class First                     // 基类First
    {
        public First()
        {
            Console.WriteLine("~First()构造函数");
        }
        ~First()                    // 析构函数
        {
            Console.WriteLine("~First()析构函数");
        }
    }
    public class Second : First            // Second类从First类派生
    {
        public Second()
        {
            Console.WriteLine("~Second()构造函数");
        }
        ~Second()                   // 析构函数
        {
            Console.WriteLine("~Second()析构函数");
        }
    }
    public class Third : Second            // Third类从Second类派生
    {
        public Third()
        {
            Console.WriteLine("~Third()构造函数");
        }
        ~Third()                    // 析构函数
        {
            Console.WriteLine("~Third()析构函数");
        }
    }

上述代码说明:

1.子类的生成和回收会触发父类的构造函数和析构函数

2.构造函数的调用从父类开始,二析构函数则相反

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值