在學習C#時這兩個函數放到一起講了,聽課的時候感覺只是有了膚淺的認識,於是查了一些資料,下面做個比較全面的理解。
析構函數——垃圾回收器,它用來清理對象時調用
析構函數不能有參數,不能任何修飾符而且不能被調用,它是自動調用的,這是它與構造函數的一個主要區別。由於析構函數的目的與構造函數的相反,就加前綴‘~’以示區別。
class First { ~First() { System.Diagnostics.Trace.WriteLine("First's destructor is called."); } } class Second : First { ~Second() { System.Diagnostics.Trace.WriteLine("Second's destructor is called."); } } class Third : Second { ~Third() { System.Diagnostics.Trace.WriteLine("Third's destructor is called."); } } class TestDestructors { static void Main() { Third t = new Third(); } }這裡用到了派生, 類 First 是基類,Second 是從 First 派生的,而 Third 是從 Second 派生的。 這三個類都有析構函數。 在 Main() 中,創建了派生程度最大的類的實例。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication8 { class Program { static void Main(string[] args) { //調用默認構造函數 Employee objEmployee = new Employee(); Console .WriteLine ("資格=" + objEmployee_qualification); Console .WriteLine ("薪水=" + objEmployee_salary); } } class Employee { private string _name; private char _gender; private string _qualification; private uint _salary; //默認構造函數 public Employee () { _qualification = "研究生"; } } }