C#之事件

來源:互聯網
上載者:User

標籤:static   listen   targe   net   class   handler   委託   read   public   

  事件基於委託,可以任何一種委託類型提供一種發布\訂閱機制。
  使用event關鍵字將一個委託類型定義為事件。

  下面通過一個例子介紹事件:

    //事件發布類        public class PublishEvent        {            public delegate string Display(string str);            public event Display DisplayEvent;            //用戶端代碼通過調用這個方法觸發事件            public void Shows(string str)            {                if (DisplayEvent != null)                {                    DisplayEvent(str);                }            }        }        //事件偵聽類,這個類訂閱事件        public class Listen1        {            public string MakeAlert(string str)            {                Console.WriteLine(str + "Listen1");                return str + "Listen1";            }        }        public class Listen2        {            public string ShowMsg(string str)            {                Console.WriteLine(str + "Listen2");                return str + "Listen2";            }        }

 

用戶端代碼:

    class Program        {            static void Main()            {                PublishEvent pe = new PublishEvent();                Listen1 l1 =  new Listen1();                Listen2 l2 = new Listen2();                //變數l1和l2訂閱了事件                pe.DisplayEvent += l1.MakeAlert;                pe.DisplayEvent += l2.ShowMsg;                //觸發事件                pe.Shows("事件");                Console.ReadKey();            }        }

 

  事件就是一個特殊的委託(http://www.cnblogs.com/afei-24/p/6762442.html),它是一個用於事件驅動模型的專用委託.你可以在客戶代碼中直接調用委託來激發委託指向的函數,而事件不可以,事件的觸發只能由服務代碼自己觸發。也就是說在你的代碼裡委託你不但可以安排誰是它的調用函數,還可以直接調用它,而事件不能直接調用,只能通過某些操作觸發。除此之此,事件擁有委託的所有功能,包括多播特性。即事件可以有多個事件處理函數,委託同樣也可以是個多播委託.
  事件是封裝過的委託執行個體;委託是類型,事件是執行個體!

  EventHandler<TEventArgs>.NET內建的委託,也用於定義事件。(可以去MSDN研究)

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.