国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

.NET零基礎(chǔ)入門05:委托與事件

2019-11-17 02:30:45
字體:
供稿:網(wǎng)友

.NET零基礎(chǔ)入門05:委托與事件

一:前言

本小節(jié),我們需要停一停我們的小游戲開發(fā),雖然它現(xiàn)在還不完美,還很簡單,甚至還有BUG。但是,為了更好的理解C#,現(xiàn)在到了該深入了解一些基礎(chǔ)知識的時候了。

當(dāng)然,實際上,本小節(jié)內(nèi)容對于零基礎(chǔ)入門的初學(xué)者來說,還是有點難了。委托與事件,如果只是泛泛的說一下,可能就是一兩句話。但是,我們的課程要遵循一個原則:知其然,知其所以然。所以,本小節(jié)的內(nèi)容實際上有點多,但是我希望大家細細品味,爭取徹底消化委托和事件這兩個概念。

同時,本課程還要教會大家使用一個工具,分析代碼。

二:委托的現(xiàn)實場景:賣家委托快遞去送貨?

任何事情,首先都要問一個為什么。這里的問題是:為什么賣家要委托快遞去送貨?

因為他干不了。他在北京賣一個壺到上海,他不應(yīng)該、也沒能力自己跑到上海交給人家。所以他要“委托”給別人來做這件事情。

在代碼的世界中,也是這樣,我們的打老鼠游戲中,現(xiàn)在所有的邏輯代碼都在窗體的后臺中,隨著我們學(xué)習(xí)面向?qū)ο?,對代碼進行重構(gòu)之后,業(yè)務(wù)邏輯代碼就會放到別的類中,這個“別的類”要負責(zé)“游戲開始”的邏輯,其中“游戲開始”的邏輯中有一個環(huán)節(jié)就是要在界面上顯示”游戲開始“。因為業(yè)務(wù)類不擁有窗體,所以它就不能顯示“游戲開始”,這個時候“委托”就派上用場了。也就是業(yè)務(wù)類不應(yīng)該、也沒能力直接對窗體顯示“游戲開始”,于是,它“委托”窗體顯示“游戲開始”。

三:委托是什么?

我們還是先回到賣家賣壺的例子來描述:“委托是什么”。實際上,賣家委托快遞送貨,需要如下一些代碼:

wps_clip_image-27023

“委托是什么”這個問題是表象,實際上它還隱藏著5個小問題:

1:委托聲明是什么?

2:委托變量是什么?

3:什么是委托變量賦值?

4:什么是委托處理器?

5:如何調(diào)用委托?

在上圖代碼中,這5個小問題的序號正好對應(yīng)了圖中的數(shù)字部分,

首先,程序得有一個地方聲明委托;

其次,賣家自己還得定義一個委托變量;

再次,通過某種形式給賣家的委托變量賦值,這個值是什么呢,就是一個委托處理器的“引用”。委托處理器就是一個方法,所以,賦值的過程,就是將方法的引用賦值給委托變量。

最后,調(diào)用委托,實際上,就是使用委托變量。

備注,要注意的是,委托聲明和委托處理器的返回值和參數(shù)必須保持一致。

四:委托本質(zhì)上是什么?

上文我們闡述了委托是什么,實際我們僅僅闡述的是委托的表象是什么,那么,委托本質(zhì)上是什么呢?

到現(xiàn)在為止,我們已經(jīng)學(xué)過了兩個類型的概念:類和枚舉。我們在這里要強調(diào)的是,上文代碼的委托聲明中的”SendPRoductHandler“實際上,是一個類,我們應(yīng)該將其看為:

internal class SendProductHandler : System.MulticastDelegate { public SendProductHandler(object @object, IntPtr method) { }

public virtual IAsyncResult BeginInvoke(string product, AsyncCallback callback, object @object) { }

public virtual void EndInvoke(IAsyncResult result) { }

public virtual void Invoke(string product) { } }

為什么是這樣的呢,相信你看了下面的視頻就會明白。

五:視頻

非公開部分,請聯(lián)系最課程(www.zuikc.com)觀看。

六:事件是什么?

知道了委托,我們來看事件,將小節(jié)”二:委托是什么“中的代碼2和3處,修改為:

wps_clip_image-27310

“委托”就變成“事件”了。

使用事件后,你可以為你的委托變量_sendProduct,增加多個方法,你看,代碼中的位置3處,不再是個“=”號,而是一個“+=”號了。

上一篇:C# IO

下一篇:逗號字符串排序

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黑水县| 新郑市| 读书| 香格里拉县| 绿春县| 泰州市| 和田市| 嘉善县| 牡丹江市| 紫阳县| 台中县| 报价| 高邑县| 观塘区| 佛冈县| 广宗县| 苍溪县| 综艺| 蓬莱市| 黄大仙区| 马鞍山市| 邮箱| 九龙城区| 浮梁县| 宜宾市| 肇东市| 尉氏县| 长泰县| 高要市| 扶余县| 宁国市| 临安市| 佛教| 越西县| 崇阳县| 大宁县| 安远县| 庐江县| 济南市| 九江市| 河北省|