委託和事件 10 6 23

2021-05-22 21:36:28 字數 1665 閱讀 1101

1. c#支援乙個重要特性之一就是支援委託(delegate)和事件(event),委託和事件這兩個本來就是完全配合的,委託可以理解為函式的指標,也就是說他能夠引用方法(函式),通過傳位址的機制來完成。

2.事件要借助委託的幫助,使用委託來呼叫已經訂閱的事件的物件中的方法

切忌:事件是要借助委託的,事件是使用委託來調已經訂閱的事件

3.定義委託 public delegate void login(string name); 無方法體

4.c#事件允許乙個物件發生的事件通知其他的物件,通知的物件叫事件的發行者,發行者可以訂閱事件,因此也叫訂閱者,乙個事件可以有多個訂閱者,被通知到的物件可以訂閱事件,也叫訂閱者

舉個例子:

比如在田徑賽跑上,運動員都準備好了聚精會神的看這裁判員的哨聲。裁判員預備,吹哨。所有的運動員開始賽跑。這樣一件生活瑣事,就可以看出,裁判員是事件的發生者,也叫事件的發行者。運動員相應該事件,因此也叫事件的訂閱者,而我們觀眾沒有賽跑,所有沒訂閱該事件。

5.定義事件,首先要定義委託,然後根據定義的委託我來定義事件(看是否要定義事件,像觀眾我們不必賽跑,因此就不定義事件)

語法:public delegate void delegatelogin();

public event login eventlogin; //定於事件無括號

事件也無方法體,委託時限定了引發事件的型別,還有函式的引數個數,型別及返回值等。

你想要委託我你就必須按照我的要求來和現實理解起來有點不同的地方:要注意

6.開始訂閱事件

只需要新增乙個委託,當引發事件的時候,委託開始選擇性的呼叫乙個方法。定於事件

eventlogin+=new delegatelogin(obj.method);

事件名(定於的事件的方法名)+=

定於了事件後就要引發

if(condition)

//引發事件

eventlogin();

############事件就要想到委託

一:下面乙個委託的例子

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace lessionrraylist

/t",name,password);

}public void adminlogin(string name ,string password)

/t",name,password);}}

class deletegateprogram}}

二:下面乙個事件,委託的例子

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace lessionrraylist

set

}private string password;

public string password

set

}//引發登入的事件,訂閱事件

public void login()}}

class eventprogram

static void user_login()}}

委託和事件 10 6 23

1.c 支援乙個重要特性之一就是支援委託 delegate 和事件 event 委託和事件這兩個本來就是完全配合的,委託可以理解為函式的指標,也就是說他能夠引用方法 函式 通過傳位址的機制來完成。2.事件要借助委託的幫助,使用委託來呼叫已經訂閱的事件的物件中的方法 切忌 事件是要借助委託的,事件是使...

委託和事件

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

委託和事件

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