iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
自我挑戰組

學習C#續系列 第 12 篇

Day 12:委派(Delegate)、委派與代理人、Lambda運算式(Lambda Expression)

  • 分享至 

  • xImage
  •  

認識委派(Delegate):

  • 委派是一種指向方法(函數)的型別安全指標(Type-Safe Function Pointer)。
  • 它定義了方法的「簽章」(回傳型別與參數清單)。只要簽章相符的方法,都能被指定給該委派變數。
  • 內建通用委派:
    • Action:代表無回傳值(void)的方法(可帶 0 到 16 個參數)。
    • Func<T, TResult>:代表有回傳值的方法(最後一個型別參數為回傳型別)。
    • Predicate:固定回傳 bool 的委派,常用於條件判斷。

委派與「代理人」:

  • 在概念上,委派就像現實中的「代理人」或「委任書」。呼叫端不需要親自執行該任務,而是將任務指派給委派物件,由委派在適當時機代為執行。
  • 多點傳播(Multicast Delegate):一個委派可透過 += 綁定多個方法,執行時會依序觸發所有被委託的方法;亦可透過 -= 解除綁定。

Lambda 運算式(Lambda Expression):

  • 一種用來撰寫匿名方法的精簡語法,使用 =>(前往 / 讀作 goes to)運算子。
  • 語法結構:(輸入參數) => 運算式或陳述式區塊。
  • 編譯器具備型別推導能力,因此大多數情況下參數型別可省略不寫。
  • 大幅簡化程式碼,不必為了傳遞簡單的運算邏輯而額外宣告一個完整方法。

實作範例
https://ithelp.ithome.com.tw/upload/images/20260925/20178925Cf2WDfEHAB.png

https://ithelp.ithome.com.tw/upload/images/20260925/20178925QOwN78WRTT.png

https://ithelp.ithome.com.tw/upload/images/20260925/20178925GA98LUajJk.png


上一篇
Day 11:System.Collections.Generic 命名空間、索引鍵/值對集合、使用索引的集合、循序存取的集合
下一篇
Day 13:例外狀況的處理
系列文
學習C#續 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言