前言
前面幾個章節,我們逐一介紹 C# 程式語言基礎內容,在這一個章節將要介紹類別 (class)。對於當時是初學者的我來說,雖然會建構與使用類別,但如何正確命名、使用並區分類別卻是一個很大困擾,直到累積了一些工作經驗與看了許多書,才大概知道怎麼撰寫程式比較合理。在這一篇,我們將簡單介紹類別,若有錯誤或任何建議,請各位先進不吝指教。關鍵字:存取修飾詞、建構函式、屬性與欄位、DTO、方法、在 Visual Studio 加入類別
介紹
類別 (class) 像是一張設計圖,你可以在類別內規劃你的程式。您能夠過關鍵字 class 建構類別,如下圖所示:存取修飾詞
表示其他程式或組進是否能夠存取該類別,存取修飾詞大致上可以分成:public 可以讓所有程式碼存取
private 相同類別內存取
protect 相同類別或延伸該類別之子類別使用
internal 只能由相同組件內程式碼存取
當完成設計圖(類別),您必須要初始化執行個體,讓他執行你的計劃,這個執行個體我們稱為物件。若不是靜態類別 (Static),你必須透過 new 這個關鍵字初始化你的物件。
一個較複雜的類別包含許多成員,包含:建構函式 (Constructor)、屬性 (Properties)、欄位 (Field) 與我們先前介紹的方法 (Method)...等,如下圖所示。
建構函式
與方法類似,當初始化時,您可能會需要需要帶入的參數讓你的程式可以運作,這個時候我們會需要它。註:您的類別可以沒有建構函式,意味著初始化物件時不需要帶入參數。
註:與方法相似,您可以依據數量不同的參數,有多個建構函式。
屬性與欄位
在物件中使用的時候,就像一般變數使用(物件.屬性 或 物件.欄位,請確認您的存取修飾子),其實兩者沒有太大差異。不同的是對於物件進行操作時,屬性提供較多的控制方式讓程式設計師使用;另外,屬性在子類別繼承的時候,可以視情況進行改變。下面的範例為簡單的屬性操作:
class Program { static void Main(string[] args) { Employee employee = new Employee(); employee.TitleWithName = "Developer Duran"; Console.WriteLine($"{ employee.TitleWithName }"); } } public class Employee { private string Name; public string TitleWithName { get { return "AFT " + Name; } set { Name = value; } } }
註:有一種物件我們稱之為資料傳輸物件 (data transfer object, DTO),這個類別內只有屬性,沒有其他任何成員。主要目的在於資料介接的時候使用。例如:WebAPI request 與 response 物件。
方法
方法部分則與先前章節介紹無異,你可以參考這篇。初始化物件後,使用屬性、欄位與方法如下(請確認您的存取修飾子是否為 public):
Employee employee = new Employee(); int salary = employee.GetEmployeeSalaryById("Duran");
重要:
若您操作物件過程中有一連串的方法,你應該要分開撰寫,避免火車鏈結(Train Wrecks)情況發生,增加可讀性
重要:
若您的操作物件是取得的內容為資料結果 (一連串的屬性與欄位存取),您可以寫在一起
在 Visual Studio 建立類別
Step 1. 在任一專案點選右鍵 -> 加入 ->新增項目Step 2. 選擇 類別 -> 輸入名稱 -> 點選新增按鈕
Step 3. 先加上存取修飾子
Step 3. 依序加入建構函式、成員..等。
Step 4. 初始化並使用
小技巧:
撰寫類別過程中,建立屬性(property)時,可以輸入prop 後連續按下 2次 tab鍵,即可自動產生屬性樣板。接著可以更改型態 -> tab -> 屬性名稱,藉此加快建立屬性。
上一篇:[C#][Visual Studio] 例外處理 (Exception)
下一篇:[C#][Visual Studio] 擴展方法 (Extend method)
參考資料
1.類別(C# 參考) - Microsoft docs2.類別(C# 程式設計手冊) - Microsoft docs
3.存取修飾詞 (C# 程式設計手冊) - Microsoft docs
0 留言