C_Sharp 板


LINE

: 基於工程師都是自尊心超強的動物..我也不敢驚動這位寶貝蛋只好看看他的 : CommunicationService到底是怎樣定義的..如下 : delegate void ErrorHandler(object obj, ErrorHArg arg); : internal absract class CommunicationService : { : public ErrorHandler Error; <<看到沒,真是寶貝的寫法 : .... : } : 難怪寶貝工程師可以在其他的class中trigger Error,因為Error根本不是一個 : event只是delegate... : 根據我的猜測(還是不敢驚動那位寶貝)這位寶貝可能基於效率的考量,所以 : 不想在使用一個event當作間接層,不過既然M$已經定義出了Event,文件上 : 的範例也都是用Event就應該有其意義,所以小弟只好在去翻了一下果然MSDN : 中C# spec.清楚說明了event是基於delegate的改良,無論event是不是宣告 : 為public,只有擁有event的物件可以trigger : [MSDN節錄] : The event keyword lets you specify a delegate that will be : called upon the occurrence of some "event" in your code. The delegate : can have one or more associated methods that will be called when your : code indicates that the event has occurred. 這麼基本的事情需要特別去查喔... : Event就小弟看來和delegata本質上是完全不同的,delegate說實在的不過是 : 一個具備type safe的function pointer,還具備了list可以指向數個不同的 : function(method)除此之外沒什麼特別的,event概念上完全不同,event代表 : 事件的發生,什麼叫事件?舉個例子 這不是廢話嗎,看你還是社會人士這種C#第一天就教的廢話需要拿出來說明喔? : 汽車旅館的物件可以在我和林志林去打泡的時候和警察局和水果日報說 : 『林志林和一個有為青年開房間』,警察局和水果日報可以依據這件事情 : 做出不同的處理,比如警察局會衝過來找我簽名,水果日報也會馬上派一堆 : 記者來訪問我,同一個事件對不同的物件有不同的意義,擁有事件的物件 : (這裡是汽車旅館)有發出事件聲明的權利和義務,而希望得到事件的物件 : (subscriber)也有義務對publisher(汽車旅館)說明他想要收到事件,這和 : delegate根本是兩回事, 上面那個寶貝的寫法套到這個例子就變成 : 水果日報對於明星和有為青年的打泡行為很有興趣,於是水果日報巧妙的 : 安排我和林志林到汽車旅館開房間,在對自己發佈消息派人採訪... : 原本是我用自己的魅力代林志林去開房間變成了水果日報的陰謀,我當然會不爽 : 物件間的分工都被搞亂了,還有原本可以不相關的兩個物件(水果日報和汽車旅館) : 現在也變的有關係,增加了不必要的耦合(coupling)... 上面整個給他無聊,這裡不是joke版也不是hate版,你po錯了!白痴 : Event應注意的事項 : 1.Event handler 傳回值應為void : 2.基於日後維護和generic的考量,建議event handler的參數應為 : (object sender, eventArg arg) : sender代表發出event的物件,arg則自訂event發出時附帶的資訊 : 3.觸發event前應確認已經有subcriber將eventhandler加入list : if(event1 != null) : event1(...); 又是節錄MSDN的廢言一堆,賺P幣喔現實生活賺太少? : 在現今強調分工,合作的發展上這絕對是一個要命的錯誤,日後debug時 : 這也很容易變成盲點(誰會想到這是水果日報的陰謀?),造成無謂的時間浪費。 : 另外我要對event補充一點,假如一個物件要管理大量的event時可以使用 : EventHandlerList class : 舉個例子,這邊假設一個物件叫汽車旅館,會發出下面幾種event : 1.明星開房間 : 2.政治人物開房間 : 3.寶貝工程師的隊長昏倒住房間 : delegate void 明星開房間Handler(object obj,string name); : delegate void 政治人物開房間Handler(object obj,string name); : delegate void 隊長昏倒Handler(object obj,string name); : class 汽車旅館 : { : EventHandlerList _eventList = new EventHandlerList(); : public event 明星開房間Handler 明星開房間 : { : add : { : //下面的"明星開房間:字串只是一個Key值可以用任何object取代 : _eventList.AddHandler("明星開房間",value); : } : remove : { : _eventList.RemoveHandler("明星開房間",value); : } : } : //另外兩個event用一樣的方法即可 : //trigger 明星開房間 event : protected void trigger明星開房間() : { : string name = "林志林"; : //"明星開房間"是剛剛加入event設定的key : EventHandler handler = (EventHandler)_eventList["明星開房間"]; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 拿出你的良心,你確定這行沒有寫錯? EventHandler handler = (明星開房間Handler)_eventList["明星開房間"]; 看看上面正確的寫法,你這種水準還趕到這個版po了一大堆錯誤連篇 的廢文,真是厚臉皮又無知到極點 : handler(this,name); : } : //另外兩個事件trigger以此類推 : } : 最後感謝寶貝工程師讓我花了一個小時確認event.. 工作上面的問題有什麼好在BBS上面說的?這是你公司的專版嗎? 正確的作法不是應該找當事人討論嗎,全部都自己臆測,怕事沒肩膀 還敢再BBS上面大放厥詞,臉皮之厚乃我生平僅見,勸你趕快刪文不要丟臉了 不過來不及了,我已經幫你備份了 XD --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.75.23.122
1F:噓 virdust2003:《上站次數》2次XD 140.113.164.7 06/24
2F:噓 Eric30:= = 140.113.138.30 06/24
3F:推 kojilin:同ip呢...fun.. 140.138.238.12 06/24
4F:噓 sheauren:回文只有謾罵的文章是不是該叫板大砍了 220.131.14.140 06/25
5F:噓 xeiyan:....呃...多重人格 163.25.118.31 06/25
6F:→ psvsps2:不好意思造成大家的困擾,這IP的確是我們公司 211.75.23.122 06/27
7F:→ psvsps2:對外的IP....但我也沒辦法找出po文的人,只能說 211.75.23.122 06/27
8F:→ psvsps2:這世界太小.. 211.75.23.122 06/27







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP