unity delegate事件委託

2021-07-11 09:34:23 字數 1458 閱讀 4468

1.對於delegate,c#將物件之間的訊息傳遞發揮到了極致,它類似於c++中的函式指標,但是delegate 可以搭載更多的函式,而c++的函式指標只能引用乙個函式。

2.delegate可以跨物件進行新增搭載。 3.

乙個delegate type的宣告在本質上是建立了乙個新的subtype instance,該 subtype 派生自 .net library framework 的 abstract base classes delegate 或 multicastdelegate,它們提供一組public methods用以詢訪delegate物件或其搭載的方法(methods) ,與函式指標不同,委託是物件導向、型別安全並且安全的。

class program

static void main(string args)

}class testdelegate

public void nonstaticmethod()

public void rundelegatemethods()

}}

public delegate void delegatemethod();這裡宣告了乙個delegate的型別,名為delegatemethod,這種delegate型別可以搭載:返回值為void,無傳入引數的函式。

public delegatemethod delegatemethod;這裡宣告了乙個delegatemethod的物件(即,宣告了某種delegate型別的物件)。

區分:delegatemethod是型別,delegatemethod是物件。

為什麼上面說delegate可以看做是函式指標呢?看下面這段**:

test.delegatemethod = new testdelegate.delegatemethod(test.nonstaticmethod); 

test.delegatemethod += new testdelegate.delegatemethod(testdelegate.staticmethod); 

test.delegatemethod += program.otherclassmethod; 

這裡delegatemethod搭載了3個函式,而且可以通過呼叫delegatemethod.invoke();執行被搭載的函式。這就是delegate可以看作為函式指標的原因。上面這段**中,delegatemethod只能搭載:返回值為void,無傳入引數的函式(見:nonstaticmethod,staticmethod,otherclassmethod的定義),這和delegate型別宣告有關(見delegatemethod的宣告:public delegate void delegatemethod())。

delegate在搭載多個方法時,可以通過+=增加搭載的函式,也可以通過-=來去掉delegate中的某個函式。

事件流 事件捕獲?事件冒泡?

事件流 從頁面中接收事件的順序。也就是說當乙個事件產生時,這個事件的傳播過程,就是事件流。ie中的事件流叫事件冒泡 事件冒泡 事件開始時由最具體的元素接收,然後逐級向上傳播到較為不具體的節點 文件 對於html來說,就是當乙個元素產生了乙個事件,它會把這個事件傳遞給它的父元素,父元素接收到了之後,還...

事件捕獲事件冒泡事件委派

當事件發生時,事件從dom樹頂層節點,一直傳播到目標節點,這個階段就叫做事件捕獲階段 當事件發生時,事件從目標節點,一直傳播到dom樹頂層節點,這個階段就叫做事件冒泡階段 當事件發生時,事件傳播順序為 事件捕獲階段 事件目標階段 事件冒泡階段 function stopbubble e else f...

冒泡事件 捕獲事件 阻止事件

father sonview code 建立父子盒子 view code 建立兩個盒子的樣式 直接上圖 冒泡事件 div1代表父盒子 div2代表子盒子 當子盒子被點選時會先處理自己,搞完自己就產生了冒泡 就是向上查詢直到document結束 為什麼不是html而是document?不是都在html...