1. 程式人生 > >C#event 與 delegate的區別

C#event 與 delegate的區別

C# in a nutshell 這本書講的很清楚 我也是看了幾遍才看到重點:
event物件 在擁有該物件的類內部可以把它當成和delegate一樣的東西
只有在類外部使用這個event的時候才有所不同 只能使用它的+=和-=這兩個運算子 不能使用任何方法去執行這個event的處理函式

簡單來說event關鍵字把delegate原本的invoke函式 和函式式的括號呼叫 都變成它的擁有類的私有函式 外部任何類都不能直接通過invoke或者括號傳參等方式呼叫這個event的處理函式
而delegate 無論它的擁有著還是其他任何類 都有全部的訪問許可權+= -=這些當然能用,直接invoke或者括號傳參也能直接執行處理函式