事件說白了就是委託,一種特殊的委託。
事件我們可以理解成:消費者向服務者提出服務的方式,然後服務者根據消費者提出的方式去執行服務,比如餐館與食客。
建立事件的要素:
1.宣告乙個委託(飯店經營的執照):
publicdelegate
void mydelegate(custom sender);
2.定義乙個提供事件服務的類,裡面包含了事件的定義、呼叫事件執行的方法,當然也可以包含事件委託。
2.1宣告乙個改委託型別的事件(飯店裡的廚子):
publicevent mydelegate myevent;
2.2 定義事件執行的方法(廚子做飯)
publicvoid run(object
sender)
3.定義乙個使用時間的消費者類,裡面包含了 將事件和消費事件方法繫結、消費事件方法的定義
3.1 自身的事件方法和服務類事件掛鉤(廚子和執照的對應,沒有執照不讓開廚子做生意):
publicvoid
customer(server se)
3.2消費事件方法(客人提出自己想吃什麼,這飯怎麼做)
publicvoid mycus(object
cs)
4主函式中對事件本身觸發的使用(主函式相當於飯館的飯桌):
4.1呼叫customer方法(客人來了提出自己想吃什麼)
4.2.呼叫服務類事件執行方法(廚師去按照客人的吩咐做飯)
總覽:
classserver
}class
custom
public
void mycus(object
cs)
}public
class
event
}
一些擴充套件:
1.在以上的**中的
server.run(newevent())
new event() 這個引數可以變換,因為當初設定服務類中事件執行方法和委託的時候引數是 object型別,所以這裡可以是各種物件。這就使委託變得形式多樣化。
2.宣告委託的時候,也可以獨立在類之外,但是引數型別就只能是object,而不是前面提到的custom,因為委託面向的範圍層級不一樣。限定具體類型別的委託需包含於類中。看**:
namespacetest
}class
custom
}public
class
event
static
void server_myserver(object
sender)
}}
object的那些事兒
昨天和大姐qq。說給我看了,今年找到物件。我就在那裡騙他們。說我找了乙個 人。明年去 以後就沒有多少機會見到他們了。呵呵,大姐就說這樣我不聽話,那樣不聽話,不讓我去,說還借我錢買房子,不能去,去了父母白養這麼大了,我總是騙他們,逗他們。以前還騙他們說我出家。有一段時間,工作不順心,我壓力挺大的。不知...
和 的那些事兒
和 都可以用作邏輯與的運算子,表示邏輯與 and 當運算子兩邊的表示式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。還具有短路的功能,即如果第乙個表示式為false,則不再計算第二個表示式,例如,對於if str null str.equals 表...
死鎖的那些事兒
死鎖的定義 如果乙個程序集合中的每個程序都在等待只能由該程序集合中的其他程序才能引發的事件,那麼,該程序集合就是死鎖的。產生死鎖的四個必要條件 產生死鎖的原因 預防死鎖 檢測死鎖 預防死鎖的幾種策略,會嚴重地損害系統效能。因此在避免死鎖時,要施加較弱的限制,從而獲得 較滿意的系統效能。由於在避免死鎖...