第一篇 C#中的委托和事件 第二篇 C#中的委托和事件(續) 首先,張子陽先生的這是兩篇關於委托和事件間關係的文章,是目前為止我讀過的介紹委托和事件以及非同步調用最簡明清晰文章,作者通過非常有節奏的“標題”->“問題”->“思路”->“實現”->“講解”的結構,分步驟一步一步地將委托和事件的實現、應用 ...
第一篇 C#中的委托和事件
第二篇 C#中的委托和事件(續)
首先,張子陽先生的這是兩篇關於委托和事件間關係的文章,是目前為止我讀過的介紹委托和事件以及非同步調用最簡明清晰文章,作者通過非常有節奏的“標題”->“問題”->“思路”->“實現”->“講解”的結構,分步驟一步一步地將委托和事件的實現、應用與原理闡述得非常清楚,並且在行文期間將自己有趣的思考過程通過生動的語言表達了出來,使人讀起來越發的感興趣,以下就是我讀過這兩篇文章以後,對委托、事件、非同步調用一些新的理解角度的闡述。
(推薦的張子揚先生的文章鏈接在本文開始處,大家完全可以先不讀我的故事,先去看那兩篇文章,真的非常好玩) 首先要引用作者文中的一個總結語:委托是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法,可以避免在程式中大量使用If-Else(Switch)語句,同時使得程式具有更好的可擴展性。我覺得這句話可以從clr-via 設計的理念去闡述我的理解: 委托這個概念存在的作用就是實現了觀察者模式,併在封裝時用類的命名定義了方法的類型,代表了一類參數列表相同的方法。 對,沒錯,就是將各種不同命名的同參數列表的方法,進行了具有可以歸類批量處理能力的封裝,歸類後就可以很方便的把標註了delegate這個關鍵字的具有特定參數列表的方法標記為一個類,併在所有做了訂閱操作(+=)的方法,放置於其編譯後所生成的代理類中的一個List<T>中,那麼在調用的時候,就可以簡單地使用調用delegate的一個實例成員,來通過一次輸入代理所定義的參數列表,調用訂閱了這一委托實例的這一組同類型方法,因為他們需要的參數列表都是相同的嘛~。