西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開(kāi)發(fā)C#.NET → 對(duì)C#中的委托、事件即delegate和event的一些個(gè)人心得

對(duì)C#中的委托、事件即delegate和event的一些個(gè)人心得

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站整理時(shí)間:2010/11/24 8:45:25字體大。A-A+

作者:佚名點(diǎn)擊:108次評(píng)論:0次標(biāo)簽: 委托 事件 delegate event 心得

  • 類型:塔防游戲大小:34.5M語(yǔ)言:中文 評(píng)分:10.0
  • 標(biāo)簽:
立即下載
在C#中,所有的Type都是從Object派生而來(lái),也就是說(shuō)一切Type皆O(shè)bject。如果,再抽象一個(gè)層次,可以把函數(shù)也看成Object,可以用函數(shù)名+參數(shù)+返回值來(lái)標(biāo)識(shí)這個(gè)函數(shù)對(duì)象。

把函數(shù)看成Object后,自然可以把函數(shù)作為成員、變量來(lái)用,甚至可以作為另一個(gè)函數(shù)的參數(shù)值、返回值!
在C/C++中,用函數(shù)指針來(lái)實(shí)現(xiàn)這個(gè)功能。在C#中,為了類型安全,回避了指針。幸運(yùn)的是,在C#中,有在語(yǔ)義上等價(jià)于函數(shù)指針的delegate類型。
一個(gè)delegate實(shí)例可以引用一個(gè)函數(shù)。一旦把一個(gè)函數(shù)賦值給一個(gè)delegate,該delegate看起來(lái)就像是那個(gè)函數(shù)的替身。
由此可見(jiàn),不同語(yǔ)言僅僅用不同的語(yǔ)法闡述了相同的思想!
《重構(gòu)》一書(shū)中,有"封裝字段"這個(gè)重構(gòu),這是一個(gè)非常簡(jiǎn)單、非常樸素、一點(diǎn)都不花哨的重構(gòu)。但是,背后的思想非常深厚、深遠(yuǎn)、深邃。
在C#中有Property來(lái)實(shí)現(xiàn)這個(gè)重構(gòu)。沒(méi)有它的話,我們可能要多寫(xiě)幾行GetXXX()、SetXXX()了。
如果,那個(gè)Field不是普通的字段,恰恰是個(gè)函數(shù)字段(即delegate實(shí)例)咋辦?難道函數(shù)字段就能暴露了嗎?!
既然,你已經(jīng)接受了它,就要好好對(duì)待它,千萬(wàn)別虐待它!
同樣,在C#中有event來(lái)實(shí)現(xiàn)。沒(méi)有它的話,我們就又要多寫(xiě)幾行AddXXX()、RemoveXXX()了!
當(dāng)你寫(xiě)下:

public event EventHandler MyEvent;

就相當(dāng)于,寫(xiě)了:
private EventHandler _myEvent;
public event EventHandler MyEvent{ add { lock (this) { _myEvent += value;
} } remove { lock (this) { _myEvent -= value;
} }}

是不是,與Property有異曲同工之效?!
相信,大家對(duì)event存在性的疑慮已經(jīng)消除!
另外,很多人疑惑"為啥只有+=、-=,而沒(méi)有="。
程序員很像木匠、瓦匠、漆匠、鐵匠……,都是靠手藝吃飯的。在長(zhǎng)期的勞動(dòng)中,有些善于思考師傅就總結(jié)出一些經(jīng)驗(yàn)。《重構(gòu)》一書(shū),就是馬師傅總結(jié)出來(lái)的。他認(rèn)為,要"封裝集合",因?yàn)橛泻锰帲?br />假設(shè),event支持=,如果一個(gè)年少無(wú)知的client,到你那里=了一下,你好不容易掛到的2個(gè)太陽(yáng)3個(gè)月亮1個(gè)星星就沒(méi)了。
    魔獸塔防地圖
    (300)魔獸塔防地圖
    塔防,即炮塔防御的簡(jiǎn)稱,也稱。塔防受眾很廣,游戲模式簡(jiǎn)單而可玩性強(qiáng),是智力和策略的比拼。當(dāng)塔防與這兩種游戲類型融合在一起的話,游戲就會(huì)變得更好玩,同時(shí)也很休閑。小編在這里為大家搜集整理了許多魔獸爭(zhēng)霸塔防地圖,歡迎感興趣的玩家們前來(lái)下載。...更多>>
    塔防游戲
    (70)塔防游戲
    西西游戲網(wǎng)提供最新最熱門的塔防游戲,塔防游戲顧名思義就是炮塔防守游戲,玩家需要建造炮塔轟炸一些進(jìn)攻的敵人保衛(wèi)家園,塔防游戲操作都很簡(jiǎn)單,就是在最合理的位置放置炮塔,無(wú)需其他的操作,可能有的塔防游戲會(huì)添加一些技能,但是也沒(méi)什么難度的哦.熱門游戲保衛(wèi)蘿卜獸人必須死炮塔防御塔防三國(guó)志等等,太多了。...更多>>

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)