程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#事件

C#事件

編輯:C#基礎知識

自從上一次自己寫了一篇對委托的理解之後,剩下的一半-對事件的理解現在才寫出來,也是拖得夠久了。現在我們一起來看看C#的事件吧


首先:為什麼要有事件?

上一篇文章展示了如何聲明委托,調用委托和創建委托的實例。然而,這時委托雖然可以間接調用任意數量的方法,但是我們必須顯式地調用委托,大部分時間,我們需要在特定事件發生時,自動執行委托,就如中介的例子,我們交代中介幫我們賣房子,當有客戶來的咨詢的時候,中介會自己主動帶客戶去了解房子,而不是每次還需要我們去告訴他,你應該帶客戶去看房子。既然委托類似中介,我們就應該讓他有自主的能力。所以事件產生了。

其次:如何聲明事件?

聲明事件的方式和字段差不多的,不過大家要注意,委托是和事件一起的。所以事件的類型必須是委托。如下:

Event DelegateName EventName;

接著:訂閱事件

我們需要事件是因為當這個事件發生時,要引起一些其他變化。當某一個或多個方法訂閱了該事件後,該事件發生時,就會調用所有訂閱了該事件的方法。

進行訂閱的這個代碼和委托添加方法類似。如下:

EvenName+=LeadToEvent();

取消訂閱:

EvenName-=LeadToEvent();

最後:引發事件

引發事件就像調用方法一樣。引發了該事件,訂閱了該事件的方法都會被調用。


現在我們來讓Demo說話吧

1.新建一個MyEventDemo的控制台應用程序:

image

2.我們新建一個類。聲明自己的委托和事件並添加一個引發事件的方法OnMyEvent

image

3.我們再新建一個類,裡面添加一些需要訂閱事件的方法

image

4.在Main函數實例化這兩個類,並讓兩個方法去訂閱這個事件

image

5.我們假設有一個事情調用了OnMyEvent,然後由於OnMyEvent被調用就會引發MyEvent事件。然後就會調用訂閱了該事件的方法

image

6.運行程序

image

我們可以看到,這兩個訂閱了MyEvent事件的方法Show和Show2被調用了。

以上就演示了一個基本的事件。

PS:以下幾點是我自己總結的需要注意的方面

1.最好把事件對應的委托聲明和事件的聲明放在同一個類中。

2.引發事件的方法也和事件放在同一個類中。

3.訂閱事件的方法的參數應該和對應的委托的參數相同。

4.一個方法可以訂閱多個事件,一個事件可以被多個方法訂閱。


如果需要更深入了解事件,大家可以看一下winform中的onclick事件。機制一樣,不過是訂閱事件的方法的參數通常是兩個(object sender,EvenetArgs args)。以上有錯誤歡迎大家指正!!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved