C#中的事件-訂閱與發布

來源:互聯網
上載者:User

標籤:

  我們用一個簡單的例子,來說明一下這種訊息傳遞的機制。

  有一家三口,媽媽負責做飯,爸爸和孩子負責吃。。。將這三個人,想象成三個類。

  媽媽有一個方法,叫做“做飯”。有一個事件,叫做“開飯”。做完飯後,調用開發事件,發布開飯訊息。

  爸爸和孩子分別有一個方法,叫做“吃飯”。

  將爸爸和孩子的“吃飯”方法,註冊到媽媽的“開飯”事件。也就是,訂閱媽媽的開飯訊息。讓媽媽做完飯開飯時,發布吃飯訊息時,告訴爸爸和孩子一聲。

  這種機制就是C#中的,訂閱發布。下面我們用代碼實現:

 1 class Program 2     { 3         public static void Main(string[] args) 4         { 5             //執行個體化對象 6             Mom mom = new Mom(); 7             Dad dad = new Dad(); 8             Child child = new Child(); 9             10             //將爸爸和孩子的Eat方法註冊到媽媽的Eat事件11             //訂閱媽媽開飯的訊息12             mom.Eat += dad.Eat;13             mom.Eat += child.Eat;14             15             //調用媽媽的Cook事件16             mom.Cook();17             18             Console.Write("Press any key to continue . . . ");19             Console.ReadKey(true);20         }21     }22     23     public class Mom24     {25         //定義Eat事件,用於發布吃飯訊息26         public event Action Eat;27         28         public void Cook()29         {30             Console.WriteLine("媽媽 : 飯好了");31             //飯好了,發布吃飯訊息32             Eat();33         }34     }35     36     public class Dad37     {38         public void Eat()39         {40             //爸爸去吃飯41             Console.WriteLine("爸爸 : 吃飯了。");42         }43     }44     45     public class Child46     {47         public void Eat()48         {49             //熊孩子LOL呢,打完再吃50             Console.WriteLine("孩子 : 打完這局再吃。");51         }52     }

  運行結果:

  當爺爺奶奶來做客了怎麼辦呢?和爸爸孩子一樣,寫個Eat方法,同樣註冊到媽媽的開飯事件就好了。

C#中的事件-訂閱與發布

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.