c#事件(續委託之後)
你應該先理解了委託之後,再來看我們的事件滴呀
publicdelegate
void mydelegate(int
val);
public
class
test
}class
program
public
static
void do2(int
a)
public
static
void do3(int
a)
static
void main(string
args)
}
物件導向設計,講究的是物件的封裝,既然可以宣告委託型別的變數,我們何不將這個變數封裝到test類中?在這個類的客戶端中使用不是更方便麼?於是將
mydelegate dele; 申明在test的內部
publicclass
test
}
呼叫:
staticvoid main(string
args)
繼續改造:test類
publicclass
test
}}
那麼呼叫就變成這樣滴!
staticvoid main(string
args)
我們先看看如果把 dele 宣告為 private會怎樣?結果就是:這簡直就是在搞笑。因為宣告委託的目的就是為了把它暴露在類的客戶端進行方法的註冊,你把它宣告為private了,客戶端對它根本就不可見,那它還有什麼用?
再看看把dele 宣告為 public 會怎樣?結果就是:在客戶端可以對它進行隨意的賦值等操作,嚴重破壞物件的封裝性!
我擦,那怎麼辦呢
答案是:事件!
申明乙個事件,就相當於申明乙個private 的委託滴呀;
在類的內部,不管你宣告它是public還是protected,它總是private的。在類的外部,註冊「+=」和登出「-=」的訪問限定符與你在宣告事件時使用的訪問符相同。
那麼最後的**優化成了這樣滴呀;
publicclass
test
}}
想進一步了解委託和事件的應用,請看observe設計模式。
c 事件 委託
c 事件 假設場景 在比賽過程中,當裁判員槍聲響起,發生了乙個事件,裁判員通知該事件發生,參加比賽的運動員仔細聽槍聲是否發生。運動員是該事件的訂閱者,沒有參賽的人不會注意,即沒有訂閱該事件。c 中使用事件需要的步驟 1 建立乙個事件 event 委託名 事件 2 訂閱事件 事件 new 委託名 方法...
c 事件委託
c 使用委託模型 來實現事件,事件的處理方法不必在將生成事件的類中定義,需要做的事情就是把事件源和事件處理程式結合起來,使用事件處理委託,簡稱事件委託可以定義為生成事件的類的乙個成員,事件委託為多播的。事件委託的形式 public delegate void mousehandler object ...
c 委託和委託事件
委託很好用,c 的委託有點函式指標的感覺,它能簡化判斷語句的使用,還能為視窗新增新的事件。weituo.cs using system using system.collections.generic using system.linq using system.text namespace fen...