成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#委托和事件學習筆記

開發 后端
這里介紹C#委托和C#事件這兩個概念是完全配合的。委托僅僅是函數指針,那就是說,它能夠引用函數,通過傳遞地址的機制完成。

C#語言還是比較常見的東西,這里我們主要介紹C#委托和C#事件,包括介紹NumberReachedEventHandle 僅是一個委托等方面。

在學習C#委托和C#事件過程中,我讀了許多文章來理解他們二者究竟是怎么一回事,以及如何使用他們,現在我將整個的理解過程陳述以下,我學到的每一方面,恐怕也是你們需要掌握的:

什么是C#委托?

C#委托和C#事件這兩個概念是完全配合的。委托僅僅是函數指針,那就是說,它能夠引用函數,通過傳遞地址的機制完成。委托是一個類,當你對它實例化時,要提供一個引用函數,將其作為它構造函數的參數。

每一個委托都有自己的簽名,例如:Delegate int SomeDelegate(string s, bool b);是一個委托申明,在這里,提及的簽名,就是說SomeDelegate 這個委托 有 string 和 bool 類型的形參,返回一個int 類型。

上面提及的:當你對委托實例化時,要提供一個引用函數,將其作為它構造函數的參數。這里要注意了:被引用的這個函數必須和委托有相同的簽名。

看下面的函數:

  1. private int SomeFunction(string str, bool bln){...} 

C#事件的理解

我們知道,在C#中:
◆按鈕(Button)就是一個類,當我們單擊它時,就觸發一次click事件。
◆時鐘(Timer)也是一個類,每過一毫秒,就觸發一次tick事件。

現在有一個Counter的類,它有一個方法 CountTo(int countTo, int reachableNum),該方法表示:在指定的時間段內(0~~countTo),當到達指定的時間點reachableNum時,就觸發一次NumberReached事件。

它還有一個事件:NumberReached,C#事件是委托類型的變量。意思是:如果給事件命名,用event關鍵字和要使用的委托類型申明它即可,如下所示:

  1. public event NumberReachedEventHandler NumberReached; 

在上面的申明中,NumberReachedEventHandle 僅是一個委托,更確切的表示應該是:NumberReachedDelegate。但是微軟從不這樣認為MouseDelegate或者PaintDelegate,而是稱謂:MouseEventHandler 或者 PaintEventHandler。所以

NumberReachedEventHandler 比NumberReachedDelegate聽起來更方便一些,OK?好了,讓我們繼續,現在你知道了,在我們聲明事件之前,需要象下面這樣的形式來定義委托:

  1. public delegate void NumberReachedEventHandler(object sender, NumberReachedEventArgs e); 

現在聲明的C#委托 NumberReachedEventHandle,它有一個void 返回值,和object,NumberReachedEventArgs兩個形參。就像我們在***節中強調的那樣,當實例化委托時,作為實參傳入的函數也必須擁有和委托同樣的簽名。

在你的代碼中, 你是否用過PaintEventArgs 或者 MouseEventArgs來確定鼠標的移動位置?是否在觸發Paint事件的對象中用過Graphics 屬性?實際上,為用戶提供數據的類都是繼承于System.EventArgs類,就是我們常說的事件參數類,如果事件不提供參數,就不定義該類。在我們的例子中,我們通過下面的類提供預期的時間點。

  1. public class NumberReachedEventArgs : EventArgs  
  2. {  
  3. private int _reached;  
  4. public NumberReachedEventArgs(int num)  
  5. {  
  6. this._reached = num;  
  7. }  
  8. public int ReachedNumber  
  9. {  
  10. get{  
  11. return _reached;  
  12. }  
  13. }  

【編輯推薦】

  1. C#類和結構簡單介紹
  2. C# explicti和implicit詳解
  3. C#編寫ActiveX控件詳細介紹
  4. C# StringBuilder和String淺析
  5. C#別名指示符學習經驗
責任編輯:佚名 來源: cnblogs
相關推薦

2009-08-18 10:54:17

C#事件和委托

2009-10-09 09:07:40

C#委托和事件

2009-08-26 14:27:54

C#委托和事件

2024-05-16 13:36:04

C#委托事件

2024-06-28 10:19:02

委托事件C#

2009-09-08 15:28:24

C#委托

2009-08-18 10:35:26

C#委托

2009-08-03 13:23:04

C#編程組件-事件-委托

2024-05-15 09:11:51

委托事件C#

2009-08-04 13:53:58

C#委托類C#事件

2009-08-24 15:50:23

C# 泛型C# 泛型委托

2011-06-30 10:28:50

C#開發

2013-03-19 09:48:38

C#

2024-10-05 00:00:35

Action?C#Func?

2024-05-30 12:24:03

C#開發

2009-08-20 15:02:57

C# If語句

2009-08-12 15:50:40

C# ListBox

2009-08-12 09:28:36

C# WiteOne

2009-08-13 18:21:52

C#學習筆記

2009-08-26 14:48:05

C#委托與事件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 殴美成人在线视频 | 国产成人精品视频 | 在线国产精品一区 | 国产精品美女 | 成人在线观看免费视频 | 97超碰免费 | av永久免费| 成人精品鲁一区一区二区 | 免费激情网站 | 色视频网站免费 | 91中文字幕在线观看 | 亚州精品天堂中文字幕 | 国产精品免费在线 | 欧美日韩在线一区二区 | 日韩中出| 中文字幕一区二区在线观看 | 黄色毛片免费看 | 91成人精品视频 | 午夜寂寞影院列表 | 99色播 | 日韩精品一区二区三区在线播放 | 国产精品99久久久久久久vr | 欧美日韩在线电影 | 亚洲va欧美va天堂v国产综合 | 91爱爱·com| 欧美综合久久 | 欧美成人精品在线观看 | 丁香久久 | 久久99网| 亚洲日日操 | 免费成人高清在线视频 | 日韩成人av在线播放 | 久久久久国产一区二区三区四区 | 亚洲成人免费视频 | 国产一区二区免费在线 | 日韩精品在线看 | 97免费视频在线观看 | 香蕉91| 91麻豆精品国产91久久久久久 | 国产一区二区激情视频 | 欧美一区二区三区在线看 |