<aside> ⚠️

補充:物件導向

讓我們來簡單複習一下 C# 的物件導向概念,包括類別、物件、方法、屬性、存取修飾詞等:

1. 類別 (Class)

類別是用來描述某一種類型物件的藍圖或模板,裡面可以包含屬性(描述物件的狀態)和方法(描述物件的行為)。你可以把類別想像成一個模型,物件則是由這個模型創建的實例。

class Person
{
    public string Name; // 屬性
    public int Age;

    public void Greet() // 方法
    {
        Console.WriteLine($"Hello, my name is {Name}");
    }
}

2. 物件 (Object)

物件是類別的實例,通過類別創建實際的物件。每個物件都有自己的屬性值。

Person person1 = new Person(); // 創建物件
person1.Name = "Alice"; // 設定屬性值
person1.Greet(); // 呼叫方法

3. 方法 (Method)

方法是類別中的行為,定義物件可以做的動作。方法可能需要參數,也可能會回傳結果。

public void Greet() // void 表示這個方法不會回傳任何值
{
    Console.WriteLine($"Hello, my name is {Name}");
}

4. 屬性 (Property)

屬性是用來存取類別內部數據的方式,通常會透過 getset 控制存取權限。

public string Name { get; set; } // 屬性包含 getter 和 setter

5. 存取修飾詞 (Access Modifiers)

存取修飾詞控制屬性或方法的可見性:

class Person
{
    private int age; // 只有類別內部可以存取
}

6. void 關鍵字

void 是一個方法的回傳類型,表示這個方法不會有回傳值。

public void Greet()
{
    // 不回傳任何結果
}

7. 建構子 (Constructor)

建構子是一種特殊的方法,在物件被創建時自動呼叫,用來初始化物件的屬性。

class Person
{
    public string Name;
    public int Age;

    public Person(string name, int age) // 建構子
    {
        Name = name;
        Age = age;
    }
}

小結:

這些概念是 C# 物件導向程式設計的基礎

C# 架構樹狀圖:

+--------------------------------------------------+
|                     using                        | // 用來引用其他命名空間中的類別和方法
+--------------------------------------------------+
        |
        +------------------------------------------+
        |                namespace                 | // 命名空間,用來組織代碼
        +------------------------------------------+
                |
                +----------------------------------+
                |              class               | // 類別,具體實作行為的藍圖
                +----------------------------------+
                        |
                        +--------------------------+
                        |    public/protected       | // 公開/保護的成員
                        |                          |
                        |   +----------------------+
                        |   |      方法 (Method)   | // 行為 (可以是 public/protected)
                        |   +----------------------+
                        |                          |
                        |   +----------------------+
                        |   |    屬性 (Property)   | // 狀態 (可以是 public/protected)
                        |   +----------------------+
                        |                          |
                        +--------------------------+
                        |       private            | // 私有成員
                        |                          |
                        |   +----------------------+
                        |   |      方法 (Method)   | // 私有行為 (private)
                        |   +----------------------+
                        |                          |
                        |   +----------------------+
                        |   |    屬性 (Property)   | // 私有狀態 (private)
                        |   +----------------------+

詳細解釋:

  1. using: 最頂層,用來引用命名空間,讓你的程式碼可以使用其他類別或函式庫(例如 using System;)。
  2. namespace: 命名空間,用來組織和區分不同類別。命名空間讓相同名稱的類別可以存在於不同的範圍內。
  3. class: 類別是命名空間內的具體實作,包含屬性和方法。它是物件導向程式設計的核心。
  4. publicprotected: 公開或保護的屬性和方法,可以被外部或繼承類別存取。
  5. private: 私有的屬性和方法,僅限於類別內部存取,無法從外部或子類別直接存取。

image.png

</aside>

c#的開始

C# 程式的基本結構

  1. using 宣告
  2. 命名空間(Namespace)
  3. 類別(Class)
  4. 主方法(Main 方法)
  5. 函數(Method/Function)

一個完整的 C# 範例程式

using System;  // 引用 System 命名空間

namespace HelloWorldApp  // 定義命名空間 HelloWorldApp
{
    class Program  // 定義類別 Program
    {
        // 主方法:應用程式的入口點
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");  // 輸出 "Hello, World!"

            // 呼叫自訂函數
            int result = AddNumbers(3, 5);
            Console.WriteLine("The sum is: " + result); // 輸出和
        }

        // 自訂函數:計算兩個整數的和
        static int AddNumbers(int a, int b)
        {
            return a + b; // 回傳兩數之和
        }
    }
}

程式的邏輯與解釋

  1. using System;
  2. namespace HelloWorldApp
  3. class Program
  4. static void Main(string[] args)
  5. Console.WriteLine("Hello, World!");
  6. 呼叫自訂函數 AddNumbers
  7. 自訂函數 AddNumbers

如何建立函數

  1. 定義函數的存取修飾符(如 publicprivateprotected 等)
  2. 指定函數的回傳類型(如 intstringvoid,如果沒有回傳值)
  3. 命名函數(具有描述性的名稱)
  4. 定義參數列表(用逗號分隔的參數類型和名稱)
  5. 撰寫函數的主體(使用 {} 包圍的程式碼塊)

函數範例解釋

static int AddNumbers(int a, int b) // 定義一個靜態函數 AddNumbers
{
    return a + b; // 回傳兩個整數的和
}