C 事件是委託嗎?

2021-08-19 04:14:54 字數 1252 閱讀 7957

經常會問事件是委託嗎?

貿然的回答:是特殊的委託是有問題的.

首先看什麼是委託:

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 ...