大白話系列之C 委託與事件講解 三

2021-07-28 03:21:50 字數 2563 閱讀 7672

protected void btnsearch_click(object sender, imageclickeventargs e)

那他們到底表示什麼呢?

在回答上面的問題之前,我們先搞懂 .net framework的編碼規範:

一、委託型別的名稱都應該以eventhandler結束。

二、委託的原型定義:有乙個void返回值,並接受兩個輸入引數:乙個object 型別,乙個 eventargs型別(或繼承自eventargs)。

三、事件的命名為 委託去掉 eventhandler之後剩餘的部分。

四、繼承自eventargs的型別應該以eventargs結尾。

這就是微軟編碼的規範,當然這不僅僅是規則,而是在這種規則下使程式有更大的靈活性,那我們就繼續重構第三講的例子,讓他符合微軟的規範。

所有訂閱者【subscriber】感興趣的物件,也就是e,都要繼承微軟的eventargs

//本例中訂閱者【也稱觀察者】mrming,mrzhang他們感興趣的e物件,就是雜誌【magazine】

public

class

pubeventargs : eventargs

public

pubeventargs (

string

magazinename)}//

發布者(publiser)

public

class

publisher}//

事件必須要在方法裡去觸發

public

void

issue(

string

magazinename)}//

subscriber 訂閱者

public

class

mrming

}public

class

mrzhang

}class

story

else

console.readkey();}}

輸入火影忍者後,觸發小明訂閱的事件

顯示

通過例子我再做一次說明,其實我們不用把sender,e想的過於可怕

一、委託宣告原型中的object型別的引數代表了subject,也就是監視物件,在本例中是 publisher(出版社)。。

二、eventargs 物件包含了observer所感興趣的資料,在本例中是雜誌。

很多事情就像看a

片,看的人覺得很爽,做的人未必!

「中國人的勵志和國外的勵志存在非常大的不同,中國的勵志比較鼓勵人立下大志願,臥薪嘗膽,有朝一日成富成貴。而國外的勵志比較鼓勵人勇敢面對現實生活,面對普通人的困境,雖然結果也是成富成貴,但起點不一樣,相對來說,我覺得後者在操作上更現實,而前者則需要用999個失敗者來堆砌乙個成功者的故事。」

在c#的event中,委託充當了抽象的observer介面,而提供事件的物件充當了目標物件。委託是比抽象observer介面更為松耦合的設計。

如果看不懂的話也沒關係,當大家oo達到一定程度了,自然而然就會明白。

最後我們來看乙個我們日常最最常用的觀察者模式:

場景:當我們用信用卡刷完錢的時候,我們就會接收到手機簡訊,或者是電子郵件,其實這就是observer pattern

//---本例場景為當使用者從銀行賬號裡取出錢後,馬上通知電子郵件和發手機簡訊---

//本例中的訂閱者,也就是觀察者是電子郵件與手機

//發布者,也就是被監視物件是銀行賬號

//obverser電子郵件,手機關心的物件e ,分別是郵件位址、手機號碼、取款金額

public

class

usereventargs : eventargs}//

發布者,也就是被監視的物件-銀行賬號

class

bankaccount

}public

void

prcess(usereventargs e)}//

觀察者email

class

email}//

觀察者手機

class

mobile}//

訂閱系統,實現銀行系統訂閱幾個observer,實現與客戶端的松耦合

class

subscribsystem

public

subscribsystem(bankaccount bankaccount, usereventargs e)

}class

client}

控制台

網上還有個熱水器燒水的observer pattern 也是蠻經典的,大家可以看看。

下一講我們要講講,在我們的日常的mes系統開發中,到底在什麼場景用到委託事件,畢竟我們學了這樣的技術,我們必須要用起來,這才有價值嘛!

呵呵!下講,將會更加精彩!

大白話系列之C 委託與事件講解 三

大白話系列之c 委託與事件講解 三 我希望大家在看完文章的時候,多做做練習,自己也可以想個場景,動動手,這樣才會有深刻的印象,不然遺忘的速度非常快 protected void btnsearch click object sender,imageclickeventargs e 那他們到底表示什麼...

大白話系列之C 委託與事件講解 三

protected void btnsearch click object sender,imageclickeventargs e protected void grdbill rowdatabound object sender,gridviewroweventargs e 那他們到底表示什麼呢...

大白話系列之C 委託與事件講解 一

從序言中,大家應該對委託和事件的重要性有點了解了吧,雖然說我們現在還是能模糊,但是從我的大白話系列中,我會把這些概念說的通俗易懂的。首先,我們還是先說說委託吧,從字面上理解,只要是中國人應該都知道這個意思,除非委託2個中文字不認識,舉個例子,小明委託小張去買車票。但是在我們的程式世界裡,也是這麼的簡...