委託和事件

2022-07-31 12:30:19 字數 1240 閱讀 9144

委託和事件應用非常廣泛,但對於接觸c#不長的人來說並不容易。他就像一道門檻,過了這個檻的人覺得真的是太容易了;但很多人過這到檻都只能過一半。今天我就跟大家來分享下我對於委託和事件的看法。

宣告乙個委託很簡單只要加上delegate關鍵字就可以宣告委託,下面是無參委託和有參委託的宣告

public delegate void frisdelegate();

public delegate void todelegate(int a ,int b);

雖然宣告乙個委託很簡單,但是我們要怎麼去用他呢?下面我們先來看乙個例子:

public class a

public void getdelegate(entrustdelegate  buyegg)

if(buyegg!=null)

buyegg();

public class b

public static void buyegga()

console.writeline("a去買");

public static void buyeggb()

console.writeline("b去買");

public delegate void entrustdelegate();

class d

static void main(string args)

entrustdelegate a1,b2;

a a=new a();

a1=b.buyegga;

b2=b.buyeggb;

a.getdelegate(a1); 

a.getdelegate(b2);

console.read();

輸出結果:

a去買b去買

以上就是委託的用法,但我們還能不能優化呢?因為每繫結乙個方法就要宣告乙個事件這樣會很麻煩。

答案是可以的,下面我們就來看看優化後的**:

public class a

public class b

public static void buyeggb()

}class d

輸出結果:

a去買b去買

a去買優化後的**確實簡結多了,但是「+=」有什麼作用為什麼不是用「=」呢?"-="又是幹嘛?

「+=」是給事件註冊方法,而「-=」是取消註冊;而之所以不用「=」是因為我們把委託放在a類宣告中用event宣告了事件,所以我們註冊事件時不能使用「=」。

如寫的不對之處,歡迎指正!!!!

委託和事件

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

委託和事件

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

事件和委託

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