先看看示例效果
按照國際慣例,得先說說概念。
委託(c# 程式設計指南)
事件(c# 程式設計指南)
以上內容來自msdn。
委託原始碼
概念和**都有了。剩下的就是應用了,要是只知道概念不會用,那還是等於不會。
要用委託首先要明確幾個問題:
1、為什麼需要委託?什麼場合用?
2、怎麼使用?
委託的使用也是比較容易的。
1)、定義委託
2)、宣告委託物件
3)、例項化委託
4)、呼叫委託(執行方法)
來點實際的**,多執行緒中訪問 ui 控制項:
public delegate void updatetexteventhandler(string strtext); // 1、定義委託型別以上**比較簡單,但可以解決一些基本的多執行緒訪問控制項問題。現實場景有:後台多執行緒操作業務,列印操作日誌到主介面text框。後台採集資料,更新到主介面chart。public updatetexteventhandler updatetext; // 2、宣告委託物件public frmmain()
private void onupdatetext(string strtext)
private void btnthreadoperatecontrol_click(object sender, eventargs e)
}).start();
}
當然,委託作為c#的乙個很核心的東西,遠不止這些內容。有多播委託,將委託作為函式引數進行封裝等。
委託類似:c/c++中的函式指標封裝版,mfc/c++builder中的postmessage/sendmessage封裝版,qt中的訊號槽。
一道華麗的分割線
使用事件也要弄清楚幾個問題
1、為什麼使用委託?什麼場合用?
事件是對多播委託的乙個封裝,主要是限制誰發布事件,誰觸發。比如自己定義乙個類,類裡面有個事件,那麼只能你來觸發,響應在別人那邊。事件多用於ui操作,但不代表非ui不可以使用。窗體程式將這一點體現的淋漓盡致。
2、怎麼使用?
事件的使用也是比較容易的。
1、由於事件是基於委託的,那麼你得先定義乙個委託型別
2、宣告委託物件,並用event關鍵字修飾
3、在宣告事件的類內部使用(誰宣告的,誰觸發)
4、在宣告事件的類的外部繫結(沒有宣告的,那你就來訂閱(繫結 +=)事件)
來點實際**:
using system;個人經驗分享2句話區分委託和事件:namespace eventdemo
static void test()
}class class1}}
1、委託一般是自己宣告,別人呼叫。
2、事件是自己宣告,自己呼叫,但是響應在別人那邊。
看完了這些,不要以為你就會使用委託和事件,只能說明你看了我的文章,謝謝。
demo
C 委託事件簡單示例
使用c 語言進行編寫 設計乙個戰士物件基礎防禦為50,基礎經驗值0,每間隔3秒 時間可以調整 經驗會提公升10,當經驗到到達100時公升級,公升級時自己基礎防禦力提公升 0.5,友軍 防禦是40 提公升 0.1,敵人 防禦是30 會下降 0.2,使用事件委託的概念完成公升級時的需求。戰士類 publ...
事件和委託示例
1 timer的elapsed事件 using system using system.collections.generic using system.linq using system.text using system.timers namespace timer的elapsed事件 e.si...
C 委託和事件的使用示例
一 委託 使用委託時要先例項化,和類一樣,使用new關鍵字產生委託的新例項,然後將乙個或者多個與委託簽名匹配的方法與委託例項關聯。隨後呼叫委託時,就會呼叫所有與委託例項關聯的方法。與委託關聯可以是任何類或者結構中的方法,可以是靜態方法,只要是可以訪問的方法都可以。1.建立乙個委託型別使用關鍵字del...