使用者自訂型別

自訂型別

除了 C# 內建的 16 種預設型別之外,開發者可自行建立使用者自訂型別,總共分為六大類:

  1. 類別(class)型別
  2. 結構(struct)型別
  3. 陣列(array)型別
  4. 列舉(enum)型別
  5. 委派(delegate)型別
  6. 介面(interface)型別

建立自訂型別必須透過型別宣告完成

  • 欲建立的型別種類
  • 新型別的名稱
  • 該型別所有成員的宣告(名稱與定義),陣列、委派除外,這兩種型別不具名稱成員

宣告完畢後,就能像使用預設型別一樣建立、操作該型別的物件。

預設型別(內建型別)可直接使用、直接實體化物件;而自訂型別,顧名思義得先自行宣告型別(如同繪製設計圖),才能接著實體化物件。

舉例來說:intfloat 這類內建基礎型別開箱即用,不用事先定義,直接寫 int age; float price; 就能使用。
至於前面提到的 Person 自訂型別,則要分成兩個步驟:

第一步:宣告(以 class Person {} 定義型別樣板)

第二步:實體化(透過 Person lucas = new Person(); 建立物件)

// 汽車類別
public class Car
{
    // 1. 私有欄位(底層存放資料)
    private string _brand;    // 車廠品牌
    private string _color;    // 車身顏色

    // 2. 公開屬性(對外開放存取介面,可加上驗證邏輯)
    public string Brand
    {
        get { return _brand; }
        set
        {
            // 簡單驗證:品牌不能為空
            if (!string.IsNullOrEmpty(value))
                _brand = value;
            else
                Console.WriteLine("品牌名稱不得空白!");
        }
    }

    public string Color
    {
        get { return _color; }
        set { _color = value; }
    }

    // 3. 行為方法:開車
    public void Drive()
    {
        Console.WriteLine($"一輛【{Color}】的【{Brand}】正在行駛中!");
    }
}Code language: JavaScript (javascript)

上方範例是一個汽車類別,內含兩個欄位。欄位本質是變數,使用內建型別負責實際儲存資料;另外還有兩個公開屬性 public string Brand{} 與 public string Color{},這兩者實際上是函式,後續章節會詳細說明;最後還有一個函式成員 public void Drive(){}。

後續章節我們會針對各種自訂型別做完整重點講解。

使用者自訂型別

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *