C#銳利體驗(五)

來源:互聯網
上載者:User

第五講 構造器與析構器

構造器

構造器負責類中成員變數(域)的初始化。C#的類有兩種構造器:執行個體構造器和靜態構造器。執行個體構造器負責初始化類中的執行個體變數,它只有在使用者用new關鍵字為對象分配記憶體時才被調用。而且作為參考型別的類,其執行個體化後的對象必然是分配在託管堆(Managed Heap)上。這裡的託管的意思是指該記憶體受.NET的CLR運行時管理。和C++不同的是,C#中的對象不可以分配在棧中,使用者只聲明對象是不會產生構造器調用的。

執行個體構造器分為預設構造器和非預設構造器。預設構造器是在一個類沒有聲明任何構造器的情況下,編譯器強製為該類添加的一個無參數的構造器,該構造器僅僅調用父類的無參數構造器。預設構造器實際上是C#編譯器為保證每一個類都有至少一個構造器而採取的附加規則。注意這裡的三個要點:

子類沒有聲明任何構造器;

編譯器為子類加的預設構造器一定為無參數的構造器;

父類一定要存在一個無參數的構造器。

看下面例子的輸出:

using System;
public class MyClass1
{
    public MyClass1()
    {
        Console.WriteLine(“MyClass1
Parameterless Contructor!”);
    }
    public MyClass1(string param1)
    {
        Console.WriteLine(“MyClass1
Constructor Parameters : ”+param1);
    }
}
public class MyClass2:MyClass1
{
}
public class Test
{
    public static void Main()
    {
        MyClass2 myobject1=new MyClass2();
    }
}

編譯器並運行可以得到下面的輸出:

MyClass1 Parameterless Contructor!

讀者可以去掉MyClass1的無參構造器public MyClass1()看看編譯結果。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.