C#中构造函数是我们在实例化对象时需要调用的函数主要用于初始化成员变量其名称与类名相同允许无参或从外部传入参数无返回值访问修饰符一般情况下为public。构造函数允许重载重载后有参的构造函数会自动顶掉无参的构造函数。在有参的构造函数中常用this关键字来区分类内成员变量与外部传入参数的区别。在一个构造函数名后添加:this(参数)可以实现该构造函数对其他构造函数的复用。析构函数是在实例化的对象触发垃圾回收时调用的主要用于资源回收C#中采用了动态垃圾回收的机制故而基本不需要我们手动调用析构函数进行垃圾回收。垃圾回收Garbage Collector主要通过遍历堆上的已经被动态分配的资源对象分辨哪些作为需要被回收的垃圾哪些仍可能被引用从而进行资源回收。在C#中我们主要采用分代算法简言之就是对整个堆内存进行分代分为0,1,2代内存每一代内存满后就触发垃圾回收对本代及之前代上的对象开始遍历从静态参数或方法参数等起进行遍历分析哪些对象不可达无引用对这些对象进行回收同时将每代内存向下移动一代并进行引用地址的重定向确保有序性对于占用内存较大的对象常常会被认为是2代内存避免频繁搬迁压缩消耗性能。在C#中我们也可以手动进行垃圾回收具体语法即为GC.Collection();namespace lesson04 { class Person { public string name; public int age; public Person():this(李四) { name 张三; age 18; } public Person(int age) { this.age age; } public Person(string name) { this.name name; } public Person(string name, int age) : this(name) { this.age age; } ~Person() { } } class Program { static void Main(string[] args) { Person p new Person(王五,19); Console.WriteLine(p.name); Console.WriteLine(p.age); p null; GC.Collect(); } } }