文章

第6天:方法與函數基礎

課程簡介

今天,我們將學習方法與函數的基礎概念。在 C# 中,方法是重複使用的程式碼段,可以讓我們更有效率地組織、管理和執行程式碼。方法可以接受參數,執行特定操作並回傳結果。透過方法,我們能讓程式碼更具結構性並增強其重複使用性。


學習目標

  • 瞭解方法的基本結構
  • 學會宣告和呼叫方法
  • 學習傳遞參數給方法
  • 了解方法的回傳值

課程內容

1. 方法的基本結構

在 C# 中,方法是由一段有名稱的程式碼構成,通常包含以下幾個部分:

  • 存取修飾詞:例如 publicprivate 等,用於控制方法的可見性。
  • 回傳類型:方法執行後的回傳值類型。若無回傳值則使用 void
  • 方法名稱:方法的名稱,用來呼叫該方法。
  • 參數列表:傳遞給方法的參數,放在括號中並以逗號分隔。
  • 方法主體:包含要執行的程式碼。

語法範例:

1
2
3
4
存取修飾詞 回傳類型 方法名稱(參數類型 參數名稱, ...)
{
    // 方法主體
}

2. 宣告與呼叫方法

宣告方法

  • 宣告方法時,需指定方法的存取修飾詞、回傳類型、名稱和參數列表。

範例:

1
2
3
4
public void SayHello()
{
    Console.WriteLine("Hello, World!");
}

呼叫方法

  • 要使用方法,需在主程式或其他方法中呼叫該方法。
  • 呼叫方法時,使用方法名稱,並以括號包住參數(若有的話)。

範例:

1
SayHello();

3. 方法的參數

方法可以接受一或多個參數,這些參數允許在方法內使用傳入的值。傳遞參數時,需要在方法宣告時定義參數類型和名稱。

有參數的方法

  • 宣告時指定參數的資料型別和名稱,呼叫時則需傳遞對應的資料。

範例:

1
2
3
4
5
6
7
public void Greet(string name)
{
    Console.WriteLine("Hello, " + name + "!");
}

// 呼叫方法
Greet("Alice");

此範例中的 name 參數接受呼叫時傳入的字串 "Alice",並在方法內使用。


4. 方法的回傳值

方法可以回傳值。若要回傳某類型的值,則需在方法宣告中指定回傳類型,並使用 return 關鍵字返回資料。若方法不回傳值,則使用 void

有回傳值的方法

  • 在方法內使用 return 關鍵字,並指定要回傳的值。

範例:

1
2
3
4
5
6
7
8
public int Add(int a, int b)
{
    return a + b;
}

// 呼叫方法並接收回傳值
int result = Add(5, 3);
Console.WriteLine("結果是:" + result);

此範例中的 Add 方法回傳兩個整數的和。


5. 傳值參數與傳址參數

在 C# 中,方法的參數傳遞分為「傳值」和「傳址」。

傳值參數

  • 預設情況下,參數以「傳值」方式傳遞,方法內的變數變更不會影響到呼叫者的變數。

範例:

1
2
3
4
5
6
7
8
public void Square(int number)
{
    number = number * number;
}

int myNumber = 5;
Square(myNumber);
Console.WriteLine(myNumber); // 結果還是 5

傳址參數

  • 使用 refout 關鍵字來傳遞參數的參照(記憶體地址),這樣方法內的變更會影響呼叫者的變數。

範例:

1
2
3
4
5
6
7
8
public void Square(ref int number)
{
    number = number * number;
}

int myNumber = 5;
Square(ref myNumber);
Console.WriteLine(myNumber); // 結果為 25

實作練習

  1. 建立新方法並呼叫
    • 開啟專案的 Program.cs 檔案,並加入以下程式碼:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      
      using System;
      
      class Program
      {
          static void Main(string[] args)
          {
              SayHello();
                   
              string name = "Alice";
              Greet(name);
      
              int result = Add(5, 3);
              Console.WriteLine("Add 方法的結果是:" + result);
                   
              int number = 10;
              Square(ref number);
              Console.WriteLine("Square 方法的結果是:" + number);
          }
      
          // 宣告方法
          public static void SayHello()
          {
              Console.WriteLine("Hello, World!");
          }
      
          public static void Greet(string name)
          {
              Console.WriteLine("Hello, " + name + "!");
          }
      
          public static int Add(int a, int b)
          {
              return a + b;
          }
      
          public static void Square(ref int number)
          {
              number = number * number;
          }
      }
      
  2. 執行程式
    • 在終端中使用以下指令執行程式:
      1
      
      dotnet run
      
    • 視察輸出結果,觀察各方法的輸出及其效果。

教學重點

  • 方法的基本結構及其用途。
  • 宣告和呼叫方法的基本語法。
  • 方法參數的傳遞方式(傳值與傳址)。
  • 方法的回傳值處理方式。

在接下來的課程中,我們將更深入地學習物件導向程式設計的概念,並運用方法來建立更具結構性和彈性的程式!

本文章以 CC BY 4.0 授權