委託:給我的第一感覺就是c++的函式指標,兩者幾乎一樣。
事件: 由兩部分組成,乙個事件發布者,乙個事件接受者
事件發布者:
事件接受者
附圖:
乙個簡單例子:
兩個類:貓和老鼠, 都有叫的方法。 當貓叫的時候,觸發老鼠叫
public class cat : animal
public cat () : base() {}
//宣告乙個委託,具體引數見附
public delegate void catshouteventhandle(object sender, catshouteventargs args);
//宣告乙個事件
public event catshouteventhandle catshout;
public override void shout() }
}
public class mouse : animal
public mouse (string name) : base(name) {}
public void run(object sender, catshouteventargs e)
}
class mainclass
}
附:
observer(觀察者)設計模式:
observer設計模式是為了定義物件間的一種一對多的依賴關係,以便於當乙個物件的狀態
改變時,其他依賴於它的物件會被自動告知並更新。observer模式是一種松耦合的設計模式。
.net framework中的委託與事件
.net framework的編碼規範:
委託型別的名稱都應該以eventhandler結束。
委託的原型定義:有乙個void返回值,並接受兩個輸入引數:乙個object 型別,乙個 eventargs型別(或繼承自eventargs)。
許多事件處理函式都是這樣的
事件的命名為 委託去掉 eventhandler之後剩餘的部分。
繼承自eventargs的型別應該以eventargs結尾。
再做一下說明:委託宣告原型中的object型別的引數代表了subject,
也就是監視物件,**函式可以通過它訪問觸發事件的物件。
eventargs 物件包含了observer所感興趣的資料
C 事件和委託
c 程式設計中的事件驅動是說應用程式的執行流程是由外界發生的事件確定的。也就是接受到任務再工作的模式。事件是乙個訊號,它告知應用程式有重要的事情發生。真正的執 況是,各個應用程式把負責不同功能的物件在其執行期間送入windows作業系統,讓這些物件等待windows產生事件。然後加以處理,windo...
C 委託和事件
什麼是委託?委託和事件這兩個概念是完全配合的。委託僅僅是函式指標,那就是說,它能夠引用函式,通過傳遞位址的機制完成。委託是乙個類,當你對它例項化時,要提供乙個引用函式,將其作為它建構函式的引數 先看示例 例中先申明乙個委託,例如 public delegate void somedelegate s...
C 委託和事件
要為類構造乙個事件,必須用 event 來宣告乙個 delegate 型的字段,如 puclic calss test 在建立類的例項後定義這個 load 事件 test m new test m.load new eventhandler m load void m load object sen...