Re: [問題] event 和 delegate

看板C_Sharp作者 (畢業了..@@")時間15年前 (2010/11/15 17:43), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串5/7 (看更多)
有沒有加event的差異就在下面標紅色的部分 有加event的話 不能直接對定義此delegate做觸發 而只能+= -= 而沒加event的話 可以觸發delegate 也可以+= -= 所以使用event此keyword的目的好處是你可以隱藏觸發此event的邏輯 但又可外部去透過+= -=註冊event listener ============================ using System; class Test { public static void myTest() { Console.WriteLine("hello"); } public static void Main(string[] args) { TestA a = new TestA(); a.testEvent1 += myTest; a.testEvent2 += myTest; a.testEvent1(); //a.testEvent2(); this is invalid a.fireEvent2(); } } class TestA{ public delegate void test(); public test testEvent1; public event test testEvent2; public void fireEvent2() { testEvent2(); } } ※ 引述《QQ29 (我愛阿蓉)》之銘言: : 你好~ : 我看了書 消化一下 : event這個關鍵字 我把它刪掉 也一樣可以編譯成功 : event這關鍵字是不是只是一個強調的形容詞 : 並不是真的一定要加 : delegate給我的感覺樣是 C++的typedef : 我的感覺像是 用這個type去new一個instance : 而你也可以不用加上event這關鍵字 : 在語法上差異 : event 在 給他值時 需要用+= 給一個instance : 不加event 就可以直接用 +..... : 這邊不知道有沒有根深層的解釋 我只是片面的覺得是這樣 : 不知有沒有解讀錯誤@@ : 請指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.239.119 ※ 編輯: popcorny 來自: 114.32.239.119 (11/15 17:44)

11/15 18:10, , 1F
test這個型別在....?
11/15 18:10, 1F

11/15 18:10, , 2F
喔喔看到了@@
11/15 18:10, 2F

11/15 18:18, , 3F
話說其實C# 4.0 In a Nutshell也有對Event做解釋
11/15 18:18, 3F

11/15 18:19, , 4F
原po可以去天瓏稍微翻一下
11/15 18:19, 4F
文章代碼(AID): #1CuG2_fK (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1CuG2_fK (C_Sharp)