Formal Parameters

Formal Parameters

參數類型

參數類型 關鍵字 差異
ByVal  
ByRef ref 參數一定要先初始化
參數參數後不一定要給值
out out 參數不用初始化
參數傳入後一定要給值

Parameter Array

  • 參數陣列也稱為不定長度參數
  • 適合用在無法事前得知傳遞參數個數的情境
  • 每個函式只能定義一個參數陣列
  • 參數陣列必須是最後一個引數
  • 參數陣列必須是同樣的資料格式
  • 宣告方式
  • 在資料格式前面加上params修飾詞
  • 資料格式宣告成陣列
  • 陣列個數為0到多個

Method Overloading

  • 同樣名稱,只是函式簽名不同
  • 只包含參數的不同格式,數量和格式順序
  • void f1(int x, string s)
  • void f1(string s, int x)
  • 不包含不同的回傳值
  • void f1(int x, string s)
  • int f1(int x, string s)

Named Parameters

  • 具名引數用來呼叫時指定特定參數的值
  • 具名引數不再需要記住參數清單中的順序
  • 具名引數必要在所有必要參數的後面
    定義
    void func(int a, int b, int c)
    呼叫
    x.func(c:2, b:4, a:2)
    

Optional Parameters

  • 選擇性參數可以減少多載的數量
  • 選擇性參數必須在所有必要參數的後面
  • 選擇性參數都必須指定預設值
  • 選擇性參數的預設值必須為常數
    定義
    void func(int a, int b, int c=1);
    呼叫
    x.func(1, 2, 3);
    x.func(1, 2);
    

    By Value Parameter

    By Value Parameter

By Reference Parameter

By Reference Parameter

Out Parameter

Out Parameter

Stack Frames

Stack Frames

static

  • 類別共用資料
  • 不需要new,直接用類別.靜態欄位就可使用 static

Constants常數

  • 使用關鍵字const宣告
  • 必須給預設值
  • 執行時期唯讀,不能修改
  • 不必new,類別名稱.常數就可使用

Constructor 建構式

  • 用來初始化類別狀態
  • 宣告成public,該類別可被new出來
  • 宣告成private,該類別只能自已new自已
  • 和類別名稱同名
  • 沒有回傳值

Destructors 解構式

  • 用來手動釋放資源(unmanaged)
  • 和類別名稱同名,前面加一個波浪符號~

Indexers 索引子

  • 沒有名稱,用關鍵字this宣告
  • 至少要有一個參數
    ReturnType this [Type param1, ...]
    {
      get{ ...}
    set{ ...}
    }
    

Partial Class

Partial Class

事件

  • 類別之間通訊的機制