1樓:narvik小紅帽
事件的本質就是一種特殊的委託。
它和委託的差別在於。
1、只有事件的定義者能引發事件(也就是說只有定義事件的那個類的能引發事件)
2、客戶**對事件的操作只能是+=或者-=(不能用=賦值)好像還有個我忘了……
你可以去看看《programming c#》裡委託和事件的那一章它上面講得非常清楚。
我學的時候先看了n本書沒看懂。
問老師他也說不出個所以然。
直到後來找了《programming c#》電子書看一下子就看懂了。
然後立刻買了實體書:p
2樓:匿名使用者
你看看定製一個事件的例子會有啟發。
首先定義一個委託型別 ("委託"是一個類) 如:
delegate void messhandel(string messagetxt);
然後用event關鍵字和委託型別一起宣告一個事件變數(事件就是委託型別的變數):
event messhandel evt;
然後給出匹配委託簽名的處理事件的處理程式(通常為一個方法) :
void method(string messagetxt){}然後用+=註冊(訂閱)事件,即為例項化一個委託:
evt +=new messhandel (method);
然後就可以用如下方式引發事件:
evt("我是一個字串");
就好像它是一個由委託指定簽名的方法一樣。
如果沒有引數則:evt();
可以添任意個匹配委託簽名的處理程式,它們全部會依次被呼叫。
C 初學者的問題,C 初學者問題。
首先要告訴你一個概念是 所有的c 程式都是從main函式開始執行的 include int show int main 程式進入main函式int main 程式從main 函式開始執行 第一段 cout 只是單純輸出返回值1,hello world 不會輸出來第二段 show 呼叫函式,輸出 he...
C語言初學,C語言初學者?
程式本身並沒有錯,以空格鍵跳出迴圈是不可能的。因為在輸入數值時,scanf會自動忽略空格。你要輸入不確定個數的數值,可以定一個正常情況下不出現的數作為退出標記。比如正常都是非負數時,可以用負數作為退出條件。把while 1 改寫為while a 0 或while a 99999 while 1 這段...
c語言初學者請教大家,C語言初學者請教大家
while a 14 的意思是a賦值為14,每次執行到這兒的時候,a的值就是4了,由於14為真,所以迴圈下去 因些最後停止迴圈是因為多次後,y的值大於了50 整個過程中,a,y的值如下 a 10,y 0 a 12,y 12 a 14,a 16,y y a 28a 14,a 16,y y a 44a ...