看板 C_Sharp 關於我們 聯絡資訊
※ 引述《QQ29 (我愛阿蓉)》之銘言: : 看了Event的使用 : 和delegate使用 : 我卻對delegate和event感到很模糊 : 我在想用C的角度 一般 要寫callback function 就用function pointer去指向function : 後 : 再適當時機幫她呼叫 : 這點 使用delegate就做得到.....我還是無法理解event和delegate最重要的差異在哪 : 使用時機.... : C++是比較麻煩 要指向class的non static function要用pointer to member : 但似乎C#完全沒管這些 直接class.Function就可以傳給delegate了 : 另外想問個小問題 : event的sender 假如 有個subscriber 和兩個不同class內的event註冊 : 當event發生 subscriber的function被呼叫了 sender進來 : 我怎麼知道 我要cast成哪個sender : 相對的....我EventArgs e 我也不知道 e 該cast成什麼耶~? : 目前想到這個 目前看書上也沒提到怎麼解決....還是根本沒這個困擾 我誤會了??? : 第三個問題是 : 通常event都宣告成public 直接 += new EventHandler( function) : 但我想要寫一個SetEvent 的函式 : 使用者寫 SetEvent( function) : {我裡面幫他 += } : 但我不知道 : SetEvent(這裡面該填什麼 type耶) : 我目前是寫 : SetEvent( EventHandler E) : { : MyEvent += new EventHandler(E); : } : 但是不給過....該怎麼改呢? 第三問題 大概寫了個類似的(如下) 測過並沒有問題 會不會是哪裡沒寫好 ---- delegate void lifeEvent(int i, string s); class people { public float height; public float weight; public lifeEvent Hungry; public void Work() { } public bool Rest() { return true; } } class Eat { static public void snack(int i, string s) { } static public void meal(int i, string s) { } } class program { static people Bob = new people(); static void Main() { people Jane = new people(); Bob.height = 180.01f; Bob.weight = 55.0f; Jane.Rest(); Bob.Hungry += new lifeEvent(Eat.meal); setfunction(Eat.snack); Bob.Hungry(1, "dinner"); } static void setfunction(lifeEvent e) { Bob.Hungry += new lifeEvent(e); } } : 以上 : 請各位指點 thx -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.18.50.4
liunate:Hungry事件是不是要加一個event關鍵字在前面? 05/14 13:53
dk3208:加上去之後Hungry就不能在Main()裡透過Bob.Hungry(...)觸發 05/14 16:45