delegate
public delegate void MyDelegate(); MyDelegate d = () => { }; d();
上面這段 code 宣告了一個名為 MyDelegate 的型別, 所以可以用 MyDelegate 來 create 變數 d, 並且可以用 () 運算子直接呼叫, 概念上跟 C/C++ 的函式指標很類似
event
public delegate void EventHandler(object sender, My_EventArgs args); public event EventHandler Click;
event 是用來修飾 delegate 欄位的修飾詞, 被 event 修飾過的 delegate 欄位, 本質上還是 delegate, 但實際上 compiler 會幫你把這個欄位加料, 變成類似屬性的用法, 讓 User 使用這個欄位時多了一些限制, 例如 event 欄位不能用 = 賦值, 只能用 +=, -= 去註冊或註銷你要掛上去的 event handler
System.Delegate
所有的 delegate 類別都會繼承這個類別, 它定義了一些 delegate 都會用到的功能, 例如 Combine 和 Remove, 但我們不該, 也應該沒有機會直接使用他, 通常是 compiler 會用到
沒有留言:
張貼留言