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

2021-08-28 23:38:27 字數 456 閱讀 2534

委託 delegate

所有的委託(delegate)都派生自 system.delegate 類。

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

事件 event

第乙個地方(事件發布):可以在乙個類中通過委託規定有乙個函式,它的函式名、引數、返回值都定好了,但沒有實現。基於上面的委託定義乙個事件。

第二個地方:可以在別的地方寫乙個引數、返回值都一樣的函式。

第三個地方(事件訂閱):在例項化這個類以後,可以用+=繫結事件和第二個地方寫的函式,就相當於在這個例項裡面事件的實現就是該函式了。但在別的地方再寫乙個例項的話,事件要重新繫結。

為什麼說通過事件比直接使用委託安全?

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

菜鳥教程C 高階教程

c 特性 attribute net框架提供了三種預定義特性 attributeusage conditional obsolete 預定義特性attributeusage 預定義特性attributeusage描述了如何使用乙個自定義特性類,它規定了特性可應用到的專案的型別。attributeus...

一本好書 C 高階高階教程

c 高階高階教程 checklist by 66 66一第1章 c 基礎知識 1.1 關於c 標準 1.2 文字常量和常變數 1.3 const的用法 1.4 const cast的用法 1.5 mutable的用法 1.6 求餘運算子 1.7 sizeo f的用法 1.8 引用與指標常量 1.9 ...

《C語言程式設計高階教程》一2 4 可見度

2.4 可見度 本文講的是c語言程式設計高階教程一2.4 可見度,每當乙個函式被呼叫的時候,乙個新的棧幀就被壓入呼叫棧。函式只能看到它自己的棧幀。考慮下面的兩個例子 這兩個程式是完全相同的。把f1中的實參k和m重新命名為a和b不會起任何作用。呼叫棧是怎樣的呢?以下是在第乙個例子中當f1被呼叫時的呼叫...