關於委託和事件的示例(原創)

2022-03-25 04:27:59 字數 1538 閱讀 3638

!關於委託和事件,許多高手都已經對此進行了很詳盡的描述,昨晚突然想到乙個情景,於是今天寫了這個委託和事件的例子出來,純粹是為了練習一下,也希望這篇隨筆對您有幫助!

情景大概是這樣的:有乙個老師,他教好幾個班級,然後每次考試後,他都會小小懲罰成績低於幾個班級成績的平均分的同學,同學們自然會很怕受罰啊,考完試立刻打**問老師。老師剛開始能夠很耐心的回答:張三,你多少分;李四你多少分。。。日子久了,可就折騰人了,剛好這個老師剛學了委託和事件,就寫了個小程式。這個程式的功能是,一旦學生問成績,立刻交給這個程式去處理,然後程式顯示結果,老師當然就可以在旁邊輕鬆地喝茶咯,哈哈,看看**吧!

首先寫個學生實體類,簡單的啦

1class

student213

public

string

name

141617}

18public

void

onaskresult(

object

student, askeventargs resultinformation)

1924}25

public

void

askteacher()

2631

}這樣,傳入乙個學生名字例項化乙個新物件,學生一旦askteacher(問老師咯),就觸發了askresult事件,onaskresult()相對於askresult事件只是觸發前多檢查了該事件是否為空。

接下來要寫事件引數類,也就是上面onaskresult的引數型別-askeventargs類,**如下:

class

askeventargs :eventargs

set}

public

string

name

}public

askeventargs(

bool

unask,

string

name)

}這個引數類儲存了學生的名字和即將告知的結果,(result)結果屬性為可寫的哦;

接下來是老師的部分了,他要訂閱學生問成績這個事件。然後自動給出判斷!

public

teacher() 

public

void

recevid(student stu)

public

void

feedback(

object

stu, askeventargs ev)

else

}public

bool

getresult(

string

name) 

else}}

這裡簡化了很多,直接用乙個hashtable儲存資料,更多的功能和判斷自己去拓展吧!這裡只是簡單的判斷加列印!包涵包涵!

最後是測試拉(用程式臺)

1static

void

main(

string

args)

2當老師註冊了學生問成績的事件後,學生一問老師,結果就自動出來了,老師呢,一邊喝茶一邊感嘆了解只知識的好處啊,哈哈。。。

原創 委託和事件

委託和事件這兩天重新溫習了一下關於委託和事件方面的知識,總結一下。一.委託 委託就是能夠將方法作為變數來傳遞。c 中使用委託的具體步驟是 1 委託的宣告。其引數形式一定要和想要包含的方法的引數形式一致。委託可以在程式執行時呼叫不同的方法,只要這個方法簽名和委託簽名保持一致。格式 修飾符 delega...

事件和委託示例

1 timer的elapsed事件 using system using system.collections.generic using system.linq using system.text using system.timers namespace timer的elapsed事件 e.si...

委託和事件使用示例

net 的事件模型建立在委託機制之上,透徹的了解了委託才能明白的分析事件。可以說,事件是對委託的封裝,從委託的示例中可知,在客戶端可以隨意對委託進行操作,一定程度上破壞了面向的物件的封裝機制,因此事件實現了對委託的封裝。下面,通過將委託的示例進行改造,來完成乙個事件的定義過程 public clas...