Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Delegate (委派) Introduction

6,880 views

Published on

1. 介紹 C# 1.0 ~ 3.0 中,Delegate (委派) 寫法的演進
2. 從演進過程式,探討 C# 在語言特性上的變遷
3. 了解 Delegate 在使用場景端的常見應用方式

Published in: Technology
  • Be the first to comment

Delegate (委派) Introduction

  1. 1. Delegate (委派)from C# 1.0 to C# 3.0Wayne, Jonathan2013.05.27
  2. 2. What is a Delegate?
  3. 3. 一個語言機制,供我們可以建立一種特殊性質的變數var X 30x3344Age=3Name="Bill"var YValue TypeReference Type
  4. 4. var ZMyFunc1()MyFunc2()InvocationListDelegate Instance這種變數指向的是「方法的參考」
  5. 5. 其實您已經在使用 Delegate...
  6. 6. 對以下的程式是否覺得熟悉?
  7. 7. Delegate 分為兩部份:1. Delegate type2. Delegate instance
  8. 8. Delegate Type 宣告delegate bool Validation (int id, double sum);delegate關鍵字delegate 參照的方法的回傳型別delegate type名稱delegate 參照的方法的參數列表
  9. 9. 最典型的 Delegate 寫法2. 宣告滿足 Delegate Type要求的函式1. 宣告 Delegate Type3. 建立 Delegate Instance4. 叫用 Delegate Instance
  10. 10. Delegate 從 C# 1.0 ~ 3.0語法上的演進C# 版本 新特性1.02.0 匿名方法(Anonymous Method)3.0 Lambda Expression
  11. 11. Delegate coding style - C# 1.02. 宣告滿足 Delegate Type要求的函式1. 宣告 Delegate Type3. 建立 Delegate Instance4. 叫用 Delegate Instance
  12. 12. Delegate coding style - C# 1.0 (Cont.)Instance Method 也可以Invoke() 方法可以省略
  13. 13. Practice!
  14. 14. 請問以下用法是對的嗎?
  15. 15. 請問以下用法是對的嗎?
  16. 16. Recap■ delegate 與其他常見變數上的差異■ 使用 delegate 的 4 步驟
  17. 17. 1.0 語法上的缺點?太過囉嗦!
  18. 18. Delegate 在 C# 2.0 語法上的改變 -Anonymous Method
  19. 19. Anonymous Method 宣告delegate ( 參數列 ) {方法主體};delegate關鍵字方法的回傳值型別由Compiler 推論
  20. 20. Delegate coding style - C# 2.0原始的 2, 3 步驟,使用一行即完成
  21. 21. Delegate coding style - C# 2.0原始的 2, 3 步驟,使用一行即完成1.0 的寫法
  22. 22. Anonymous Method 帶來的新語言特性 - Closure (閉包)
  23. 23. Closure 允許匿名方法存取外部變數
  24. 24. Closure 範例形成一個 Closure
  25. 25. 2.0 vs. 1.0■ 引入 Anonymous Method (匿名方法)■ 引入了 Closure (閉包) 機制
  26. 26. Delegate 在 C# 3.0 語法上的改變 -Lambda Expression
  27. 27. Lambda Expression- 概念取自於程式語言理論中的"Lambda Calculus"
  28. 28. Lambda Calculus 寫法λx → x * xλx.λy → x * y
  29. 29. C# 下的 Lambda Expression 寫法(參數1, 參數2, ...) => <單行運算式>x => x * x(x, y) => x * y(參數1, 參數2, ...) => {多行運算式}
  30. 30. Delegate coding style - C# 3.02、3步驟簡化為使用 Lambda Expression
  31. 31. Delegate coding style - C# 3.02、3步驟簡化為使用 Lambda Expression
  32. 32. 從 Anonymous Method 到Lambda Expression 的推衍寫法轉換為 Lambda Expression單行 Statement 可省略大括號參數型別可由 Compiler 推論單一參數不需括號
  33. 33. 3.0 vs. 2.0■ 引入 Lambda Expression■ 更加重了型別推論 (Type Inference)的使用
  34. 34. Recap■ C# 在 delegate 語法上的演進■ Anonymous Method 與 Closure■ Lambda Expression 與型別推論
  35. 35. TWO more things...
  36. 36. C# Event (事件)
  37. 37. Delegate 是事件的基礎
  38. 38. .Net 內建與事件相關的 Delegate -EventHandler
  39. 39. 使用 event 關鍵字宣告事件
  40. 40. 使用事件
  41. 41. Delegate in LINQ
  42. 42. List<T>.Exists()內建泛型 DelegateDelegate 完整宣告
  43. 43. List<T>.Where()Delegate 完整宣告內建泛型 Delegate
  44. 44. Recap■ Event 與 delegate 的關係■ Delegate 在 LINQ 中的使用
  45. 45. ReferenceMSDN 參考資料■ delegate (C# 參考)■ event (C# 參考)■ 委派 (C# 程式設計手冊)■ 事件 (C# 程式設計手冊)■ 匿名函式 (C# 程式設計手冊)■ ASP.NET Page Life Cycle Overview書籍參考資料■ Learning C# 3.0: Master the fundamentals of C# 3.0 - Delegates andEvents■ C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0programmers - Delegates, Events, and Lambda Expressions■ C# 4.0 in a Nutshell - Chapter 04 Advanced C#
  46. 46. Reference (Cont.)論壇、Blog 文章■ Huan-Lin 學習筆記 - C# 筆記:重訪委派-從 C# 1.0 到 2.0 到 3.0■ Huan-Lin 學習筆記 - C# 筆記:從 Lambda 表示式到 LINQ■ In 91 - [.NET]快快樂樂學LINQ系列前哨戰-Lambda的簡介■ 老赵点滴 - 追求编程之美 - 从.NET中委托写法的演变谈开去(上):委托与匿名方法■ 老赵点滴 - 追求编程之美 - 从.NET中委托写法的演变谈开去(中):Lambda表达式及其优势■ 老赵点滴 - 追求编程之美 - 从.NET中委托写法的演变谈开去(下):性能相关■ 老赵点滴 - 追求编程之美 - 警惕匿名方法造成的变量共享■ 老赵点滴 - 追求编程之美 - 您善于使用匿名函数吗?■ InfoQ 中文 - 高阶函数、委托与匿名方法■ Stack Overflow 討論 delegate 是否為 reference type 的討論串 - Why aredelegates reference types?

×