zoukankan      html  css  js  c++  java
  • C#中构造函数和析构函数区别

    把对象的初始化工作放在构造函数中,把清除工作放在析构函数中。当对象被创建时,构造函数被自动执行。当对象消亡时,析构函数被自动执行。这样就不用担心忘记对象的初始化和清除工作。 

      析构函数是由垃圾回收器控制的.

    析构函数是由垃圾回收器控制的.把对象的初始化工作放在构造函数中,把清除工作放在析构函数中。当对象被创建时,构造函数被自动执行。当对象消亡时,析构函数被自动执行。这样就不用担心忘记对象的初始化和清除工作。一般不要定义析构函数,如果要释放非托管资源的话,就让该类继承IDisposable接口,实现Dispose模式。

    using中的申明的对象确实可以释放,可以参考示例。

    using System;

    namespace ConsoleApplication7
    {
        /// <summary>
        /// test 的摘要说明。
        /// </summary>
        public class Test:IDisposable
        {
            public Test(string name)
            {
                this.name = name;
            }

            private string name;

            public string Name
            {
                get{return name;}
                set{name = value;}
            }

            public static void Main()
            {
                Console.WriteLine("Programme Start!");

                Test test1 = new Test("1");
                using(test1)
                {
                }
                using(Test test2 = new Test("2"), test3 = new Test("3")) 
                {
                    Test test4 = new Test("4");
                }

                Console.WriteLine("Programme Over!");
                Console.ReadLine();
            }

            #region IDisposable 成员

            public void Dispose()
            {
                Console.WriteLine("{0}正在释放资源",name);
            }

            #endregion
        }

    }

    证明这个方法是可行的

  • 相关阅读:
    Golang Json文件解析为结构体工具-json2go
    沉浸式状态栏的简易实现
    高级数据结构及应用 —— 使用 bitmap 进行字符串去重
    机器学习:Kullback-Leibler Divergence (KL 散度)
    机器学习: 共轭梯度算法(PCG)
    二进制比特位运算
    C 语言经典面试题 —— 宏
    python base64 编解码,转换成Opencv,PIL.Image图片格式
    Kaggle:House Prices: Advanced Regression Techniques 数据预处理
    maven 细节 —— scope、坐标
  • 原文地址:https://www.cnblogs.com/mjq5150/p/6273330.html
Copyright © 2011-2022 走看看