1. 程式人生 > >菜鳥教程C#高階教程部分理解(一)委託與事件

菜鳥教程C#高階教程部分理解(一)委託與事件

委託與事件

  1. 委託 Delegate

    所有的委託(Delegate)都派生自 System.Delegate 類。

    定義一個委託,該委託可用於引用帶有完全相同引數和返回型別的方法。

    委託的多播(也叫組播、委託鏈):一個委託變數可以同時繫結多個方法,每一個委託(實際上是方法)都順序指向下一個委託。可用運算子為= 、 += 、 -= 。

  2. 事件 Event

    第一個地方(事件釋出):可以在一個類中通過委託規定有一個函式,它的函式名、引數、返回值都定好了,但沒有實現。基於上面的委託定義一個事件。 第二個地方:可以在別的地方寫一個引數、返回值都一樣的函式。 第三個地方(事件訂閱):在例項化這個類以後,可以用+=繫結事件和第二個地方寫的函式,就相當於在這個例項裡面事件的實現就是該函數了。但在別的地方再寫一個例項的話,事件要重新繫結。

    為什麼說通過事件比直接使用委託安全? 答:直接用委託是可以直接用=對委託進行操作,容易出錯(比如本來想寫+=或者-=)使委託的內容被清掉。而通過事件,就只能使用+=、-=而不能用=,而且必須在通過定義了事件的那個類進行操作。