天天看點

C#基礎之構造函數(Constructor)與析構函數(Destructor)構造函數析構函數

忙了一段時間,終于清閑一點。花一點時間來寫寫部落格也是件挺開心的事。我們來繼續我們的C#基礎課程講解,今天我們要了解的是類的構造函數和析構函數

構造函數

構造函數是在類執行個體化時執行的方法,它沒有傳回值,而且名稱與類名相同。構造函數在執行的時候會初始化類中的字段,為其賦為預設值(預設值大家可以在MSDN上進行檢視)
如果類中沒有顯式聲明構造函數,.net Framework會預設為我們建立一個該類的構造函數,他的作用就是初始華麗些資源,引用類型預設為null

構造函數大緻可以分為三種類型:

1.執行個體化構造函數

有參的構造函數定義後,預設的構造函數就沒有了。執行個體化構造函數是用來執行個體化對象的

class zzqupy

    {

        int age;

        public zzqupy()

        {//無參構造函數

            Console.WriteLine("在被執行個體化的時候執行");

        }

        public zzqupy(int age)

        {//有參構造函數

            this.age = age;

        }

    }

2.靜态構造函數

不允許有通路修飾符,通路類之前,靜态構造函數首先被調用,而且隻會補調用一次。靜态構造函數是不允許有參數的。每個類隻能有一個靜态構造函數。給靜态字段初始化,會預設生成一個靜态構造函數,該靜态構造函數将字段的初始化放在靜态構造函數内部進行。這就說明,所有的靜态字段的初始化都是在靜态構造函數中完成的

class zzqupy

    {

        static int i;

        static zzqupy()

        {//靜态構造函數,用來初始化靜态字段

            i = 10;

        }

    }

3.私有構造函數

不允許在類外部進行執行個體化。這涉及到設計模式上的課程了,我們在以後會進行講解。這裡不再過多讨論

析構函數

一個類隻有一個析構函數

無法繼承和重載析構函數

無法調用析構函數 (自動被調用 )

析構函數沒有修飾符,也沒有參數

class Program

   {

       static void Main(string[] args)

       {

           zzqupy zz = new zzqupy();           

       }

   }

   class zzqupy

   {       

       ~zzqupy()

       {

           Console.WriteLine("我被析構了");

       }

   }

C#基礎之構造函數(Constructor)與析構函數(Destructor)構造函數析構函數
運作結果中,我們會發現當CLR發現類的執行個體不會被使用的時候就會調用類的析構函數

本篇相對來說是很容易了解的,本系列也是針對C#基礎來說的。是以沒有細說,見諒

轉載請注名:小曲 @ CSDN