在物件導向的程式設計中,類是最常用的設計之一

本文將針對類的建構式及解構式來做一些簡單的觀念說明

建構式的說明

在一個類當中,如果有方法的名稱和類的名稱一樣,這個方法就叫做建構式.

建構式的主要目的是為了初始化類裡面的欄位(fields),而且建構式不會有返回值.

而建構式可能有多個,它會依輸入的參數型別,參數數量的不同,就視為不同的建構式.

如果一個類當中沒有宣告任何建構式,C#會自己設定一個預設的建構式,該建構式的參數是空的.

如果程式設計者自己宣告了建構式,那C#就不會添加預設的建構式,如果需要參數為空的建構式,就要自己再宣告.

以下我們使用例子來說明

class Employee
{
    string _firstName;
    string _lastName;

    public Employee(string firstName, string lastName)
    {
        _firstName = firstName;
        _lastName = lastName;
    }

    public void PrintName()
    {
        Console.WriteLine("Employee Name is {0}", _firstName + " " + _lastName);
    }
}

黃色區域就是建構式,而這建構式的主要是從類的實例處取得firstName及lastName再對_firstName及_lastName賦值

而使用這個類的方法如下,先實例化e,再呼叫PrintName()將名字印出來

class Program
{
    static void Main()
    {
        Employee e = new Employee("charles", "Lin");
        e.PrintName();
    }        
}

在上例中實例化時,你必須同時帶入firstName及lastName,若沒帶參數是過不了的,因為你沒有未帶參數的建構式

下例的例子,我們說明如何再建一個未帶參數的建構式,並且符合姓名不為空的情形

class Employee
{
    string _firstName;
    string _lastName;

    public Employee()
        : this("noFirstName", "noLastName")
    { 
    
    }

    public Employee(string firstName, string lastName)
    {
        _firstName = firstName;
        _lastName = lastName;
    }

    public void PrintName()
    {
        Console.WriteLine("Employee Name is {0}", _firstName + " " + _lastName);
    }
}

如果你未帶參數實例化Employee,它就會以noFirstName及noLastName帶入.

 

解構式的說明

解構式一般不用自己寫,C#會有預設的解構式,除非你有特殊原因,不然就交給C#去自己回收資源就好了.

解構式不會帶任何參數,也不會有任何的返回值.

宣告方法如下

class Employee
{
    string _firstName;
    string _lastName;

    public Employee()
        : this("noFirstName", "noLastName")
    { 
    
    }

    public Employee(string firstName, string lastName)
    {
        _firstName = firstName;
        _lastName = lastName;
    }

    public void PrintName()
    {
        Console.WriteLine("Employee Name is {0}", _firstName + " " + _lastName);
    }

    ~Employee()
    {
       //放入解構式的程式碼
    }

}

綠色的區塊就是解構式的宣告

 

 

arrow
arrow

    痞客興 發表在 痞客邦 留言(0) 人氣()