1、事件的作用
事件是對委託的封裝,如同屬性對字段的封裝。封裝後可以在委託上實現更複雜的邏輯。
1.1 封裝訂閱
委託允許使用「=」對其進行賦值,但向乙個委託例項賦值多個委託時,使用「=」會造成覆蓋之前的委託。事件只支援「+=」或「-=」對事件進行賦值
1.2 封裝發布
委託可以在其他類進行訪問,而事件可以確保只有包容類才能觸發事件通知。
2、事件宣告
通過event關鍵字宣告事件,使用event關鍵字後,會禁止public委託字段使用「=」賦值運算子,並且只有包容類才能呼叫發出通知的委託。從而完美的解決了委託存在的這兩個問題。
public event 委託型別 事件名;
public event actionontemperaturechanged;
3、eventhandler和eventargs
c#預定義了乙個事件委託eventhandler,具體定義如下:
public delegate void eventhandler(object sender, teventargs e);
可以看出eventhandler是乙個泛型委託,返回值為void,有兩個引數,一般情況第乙個引數sender包含呼叫委託的例項。第二個引數是eventargs型別或它的子類,包含了事件的附加資料。
4、事件的內部機制
事件可以被視為一種特殊的委託,它中為委託物件隱式的建立add_***和remove_***兩個方法(cil),用作註冊和登出事件的處理方法。並且事件將對應的變數成員視為private,所以外部類無法直接訪問。
c#**
public class eventtest
public delegate void mydelegate();
public event mydelegate myevent;
通過編譯器可以看到
myevent
add_myevent(mydelegate) : void
remove_myevent(mydelegate) : void
第十三章 事件(事件處理程式)
事件就是使用者或瀏覽器執行的某種動作。響應某個事件的函式就是事件處理程式。dom0級事件處理程式。使用dom0級方法指定的事件處理程式被認為是元素的方法。因此這時候的事件處理程式是在元素的作用域中執行的 換句話說,程式中的this引用當前元素。可以通過this訪問元素的任何屬性和方法。以這種方式新增...
第十三章 併發
13.1 動機 13.2 基本執行緒 如果必須要控制現成的執行順序,最好是根本不用執行緒,而是自己編寫特定順序彼此控制的協作子程式。繼承thread類或者實現runnable介面。內部類實現。13.3 共享受限資源 1 如果要對類中的某個方法進行同步控制,最好同步所有方法。如果忽略了其中乙個,通常很...
第十三章 類
1.類簡單地說是乙個性的資料型別。類當中有資料成員,和成員函式。類的基本思想就是體現出資料的抽象和封裝。2.這裡只需要說明乙個問題即可 就是類成員函式的const型別 class screen public const int get const int i const int j const 這裡...