前言

前面幾個章節,我們逐一介紹 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 docs
2.類別(C# 程式設計手冊) - Microsoft docs
3.存取修飾詞 (C# 程式設計手冊) - Microsoft docs