1. 程式人生 > >C# 函式與委託

C# 函式與委託

函式 函式的定義包括函式名、返回型別和引數列表(引數數量和型別)。 函式的名稱和引數共同定義函式的簽名。 注意:const變數,也就是常量。
  1. 引數:
C#允許為函式指定一個(只能一個)特殊引數,這個引數必須是函式定義中的最後一個引數,成為引數陣列。引數陣列允許使用個數不定的引數呼叫函式,可以使用params關鍵字定義它們。
  1. 引用引數和值引數:
引用引數用ref關鍵字來指定,也就是說被ref關鍵字指定的引用引數在函式處理後,本身的值會發生變化。 而值引數僅僅為函式的輸入引數賦值,函式結束後,原本的值引數不發生變化。 輸出引數使用關鍵字out指定,與ref類似。區別有:
  • 把未賦值的變數用作ref引數是非法的,但可以把未賦值的變數用作out引數。
  • 另外,在函式使用out引數時,必須把它看成未賦值。
  1. 變數的作用域
全域性變數,要用static關鍵字宣告; 如果區域性變數和全域性變數同名,那麼全域性變數要用Program.value宣告,以防止在區域性程式碼中被區域性變數遮蔽。 必須在使用變數前,對其宣告初始化。 使用static宣告的函式版本必須使用全域性變數。
  1. main函式
main函式可以是void或者int返回型別; String[] args是可選引數,表示程式啟動方式。
  1. 結構函式:在結構體中定義的函式
  2. 函式的過載
函式過載允許建立多個同名函式,每個函式使用不同的引數型別。 函式是根據函式的簽名進行區分的(函式名 +引數)。
  1. 委託delegate
委託是儲存函式引用的型別。 委託的宣告非常類似於函式,但不帶函式體,而且要使用delegate關鍵字。 委託的宣告指定了一個返回型別
和一個引數列表。 定義委託後,可以宣告該委託的變數。寫著把這個變數初始化為與委託具有相同返回型別和引數列表的的函式引用。之後,就可以使用委託變數呼叫這個函式,就像該變數是一個函式一樣。 要點:
  • 委託型別要與被委託函式型別相同。
  • 委託是一個型別,需要例項化為一個物件(宣告該委託的變數)。這個變數與被委託函式型別相同。
  • 例項化委託變數(物件)時,就要繫結被委託函式。之後直接使用委託變數,以函式呼叫的方式呼叫被委託函式。
委託型別的宣告:static delegate ProcessDelegate(double p1, double p2); 使用委託型別宣告變數:ProcessDelegate process;
初始化process委託變數:process = new ProcessDelegate(Function); // 把一個函式引用(函式名)賦值給委託變數 或者:process = Function; // 但是這樣可讀性差。 最後,通過委託呼叫函式:process(p1,p2); // 這裡把委託變數看成函式名 委託的使用與事件處理有關,事件處理屬於高階C#內容 。