經常會問事件是委託嗎?
貿然的回答:是特殊的委託是有問題的.
首先看什麼是委託:
internal static class program
}
對應的il如下:可以看到il中可沒有什麼delegate關鍵字啊。delegate會編譯為乙個密封類,
繼承自system.multicastdelegate。
.class private auto ansi abstract sealed beforefieldinit stringtest.program
extends [mscorlib]system.object
// end of method de::.ctor
.method public hidebysig newslot virtual
instance void invoke () runtime managed
// end of method de::invoke
.method public hidebysig newslot virtual
instance class [mscorlib]system.iasyncresult begininvoke (
class [mscorlib]system.asynccallback callback,
object 'object'
) runtime managed
// end of method de::begininvoke
.method public hidebysig newslot virtual
instance void endinvoke (
class [mscorlib]system.iasyncresult result
) runtime managed
// end of method de::endinvoke
} // end of class de
// methods
.method private hidebysig static
void main () cil managed
delegate void de();
class a
static void test()
{}
事件是可以處觸發執行的!是物件!所以事件是特殊委託的例項。
特殊在哪兒呢?私有而已!il可以看到。不再粘出。
什麼是事件委託
隨著dom結構的複雜化和ajax等動態指令碼技術的運用,事件委託自然浮出了水面。jquery為繫結和委託事件提供了.bind live 和.delegate 方法。本文在討論這幾個方法內部實現的基礎上,展示它們的優劣勢及適用場合。事件委託 事件委託的事例在現實當中比比皆是。比如,有三個同事預計會在周...
c 事件 委託
c 事件 假設場景 在比賽過程中,當裁判員槍聲響起,發生了乙個事件,裁判員通知該事件發生,參加比賽的運動員仔細聽槍聲是否發生。運動員是該事件的訂閱者,沒有參賽的人不會注意,即沒有訂閱該事件。c 中使用事件需要的步驟 1 建立乙個事件 event 委託名 事件 2 訂閱事件 事件 new 委託名 方法...
c 事件委託
c 使用委託模型 來實現事件,事件的處理方法不必在將生成事件的類中定義,需要做的事情就是把事件源和事件處理程式結合起來,使用事件處理委託,簡稱事件委託可以定義為生成事件的類的乙個成員,事件委託為多播的。事件委託的形式 public delegate void mousehandler object ...