C 委託與事件之學習

2021-06-21 21:05:49 字數 1837 閱讀 4152

一、c#委託類

委託類似於函式指標,但函式指標只能引用靜態方法,而委託既能引用靜態方法,也能引用例項方法。

委託使用分三步:1、委託宣告;2、委託例項化;3、委託呼叫。

例程一:

程式**

using system;  

namespace 委託  

private

int add(int num1,int num2)  

}  }

例中,委託numope引用了方法add。

委託宣告了以後,就可以象類一樣進行例項化,例項化時把要引用的方法(如:add)做為引數,這樣委託和方法就關聯了起來,就可以用委託來引用方法了。

委託和所引用的方法必須保持一致:

1、引數個數、型別、順序必須完全一致。

2、返回值必須一致。

二、c#事件

事件有很多,比如說滑鼠的事件:mousermove,mouserdown等,鍵盤的事件:keyup,keydown,keypress。

有事件,就會有對事件進行處理的方法,而事件和處理方法之間是怎麼聯絡起來的呢?委託就是他們中間的橋梁,事件發生時,委託會知道,然後將事件傳遞給處理方法,處理方法進行相應處理。

比如在winform中最常見的是按鈕的click事件,它是這樣委託的:this.button1.click += new system.eventhandler(this.button1_click);按按鈕後就會出發button1_click方法進行處理。eventhandler就是系統類庫里已經宣告的乙個委託。-------委託例項化,this.buttion1_click為方法名

三、c#自定義事件及其處理

eventhandler以及其它自定義的事件委託都是一類特殊的委託,他們有相同的形式:

delegate void 事件委託名(object sender,eventargs e);

object用來傳遞事件的發生者,比如二中的button控制項就是乙個事件發生者;eventargs用來傳遞事件的細節。

例程二:

程式**

using system;  

namespace 最簡單的自定義事件  

}  }  }  

/// < summary>

/// 事件接收類

/// < /summary>

class class2  

private

static

void c1_onuserrequest(object sender, eventargs e)  

}  }

例程三:

程式**

using system;  

namespace 帶事件資料的事件  

set}  

}  /// < summary>

/// 事件傳送類

/// < /summary>

class class1  

}  }  }  

/// < summary>

/// 事件接收類

/// < /summary>

class class2  

private

static

void c1_onuserrequest(object sender, onuserrequesteventargs e)  

}  }

例程三跟例程二唯一的差別在於自定義了乙個類onuserrequesteventargs,從eventargs繼承。

至此,c#委託類、c#事件及c#自定義事件就介紹到這裡。

C 學習筆記 委託與事件

委託是一種程式特性,用於表示方法 方法的代表,方法的指標 通俗來說就是自己做不了的,通過委託任務給別人來完成。在委託中,可以動態的增加或刪減具體方法與委託變數的關聯。多播委託是指委託變數中有多個具體方法,委託變數執行時會按照具體方法加入的先後順序,執行具體方法。1 宣告委託 1 宣告委託 publi...

c 委託與事件

c 委託與事件 心得 c 用委託來實現事件通知機制。委託相當與c 函式指標。整個過程涉及乙個呼叫者,乙個被呼叫者,還有就是這個委託。實現步驟有以下幾步 1.申明委託,2.定義呼叫者和呼叫的函式,3.定義被呼叫者和具體實現的函式 被呼叫的函式 1.申明委託 在包裡或者類裡,public public ...

C 委託與事件

在c 中,委託類似於c 中的 機制,宣告乙個委託型別,可以分別採用例項方法和靜態方法例項化了委託,所不同的是採用靜態方法例項化的委託,它的 target 屬性為null 而用例項方法例項化的委託,它的 target 屬性為該例項。但是這裡要注意,如果你用 console.writerline del...