糾結著委託和事件

2021-05-26 01:03:21 字數 1246 閱讀 1849

今天看了下委託是啥回事...

教程是藍色理想的jimmyziyang的文章,他**是

code:

using system;   

using system.collections.generic;   

using system.text;   

namespace delegate    

private

static

void chinesegreeting(string name)    

//注意此方法,它接受乙個greetingdelegate型別的方法作為引數

private

static

void greetpeople(string name, greetingdelegate makegreeting)    

static

void main(string args)    

}   

}   

第一篇結尾說的也就是:

委託是乙個類,它定義了方法的型別,使得可以將方法當作另乙個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用if-else(switch)語句,同時使得程式具有更好的可擴充套件性。

果然是避免大量使用if-else(switch)語句...我看教科書的時候就覺得應該也能用if-else來實現...

但是又想到個問題,呼叫的方法如果引數和委託相同:

code:

public

delegate

void greetingdelegate(string name);   

class program   

private

static

void chinesegreeting(string name)   

private

static

void hit(string name)   

//注意此方法,它接受乙個greetingdelegate型別的方法作為引數

private

static

void greetpeople(string name, greetingdelegate makegreeting)   

static

void main(string args)   

}  結果居然不是greet也能實現hit方法,

那麼看來委託的控制是要靠程式設計師來決定了,

繼續糾結,等待後面能解答疑問

委託和事件

主要過程如下 1.在後台 中,我們可以定義處理程式方法alartrang 2.然後定義委託,引用到處理程式方法的例項。3.最後將委託新增到事件中。從而,引發事件時就會呼叫相關的事件處理方法。若要使用在另乙個類中定義的事件,必須定義和註冊乙個事件處理程式。事件 處理程式必須具有與為事件宣告的委託相同的...

委託和事件

委託的宣告 public delegate void mydelegate string str 注1.委託的定義和方法的定義類似,只是在前面加了乙個delegate,但委託不是方法,它是一種型別。是一種特殊的型別,看成是一種新的物件型別比較好理解。用於對與該委託有相 同簽名的方法呼叫。2.委託相當...

事件和委託

事件是物件傳送的訊息,以發訊號通知操作的發生。操作可能是由使用者互動 例如滑鼠單擊 引起的,也可能是由某些其他的程式邏輯觸發的。引發事件的物件稱為事件傳送方。捕獲事件並對其作出響應的物件叫做事件接收方。在事件通訊中,事件傳送方類不知道哪個物件或方法將接收到 處理 它引發的事件。所需要的是在源和接收方...