在物件導向的程式設計中,類是最常用的設計之一
本文將針對類的建構式及解構式來做一些簡單的觀念說明
建構式的說明
在一個類當中,如果有方法的名稱和類的名稱一樣,這個方法就叫做建構式.
建構式的主要目的是為了初始化類裡面的欄位(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()
{
//放入解構式的程式碼
}
}
綠色的區塊就是解構式的宣告
留言列表