1. 程式人生 > >C#使用委託和事件實現釋出訂閱者模式

C#使用委託和事件實現釋出訂閱者模式

事件是C#中的高階概念,和js中的滑鼠點選$("tag").click,懸停$("tag").hover或css元素樣式的改變(onChanged)等事件,當事件觸發才執行我們所委託的方法。

步驟:
1、建立一個委託;
2、將建立的委託與特定事件關聯;
3、編寫C#事件處理程式;
4、利用編寫的C#事件處理程式生成一個委託例項;
5、把這個委託例項新增到產生事件物件的事件列表中去(+=),這個過程又叫訂閱事件。取消的方式是(-=)
 

點選才執行,不點選不執行:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Example_EventTest
{
    class JudgeEvent
    { 
        //定義一個委託
        public delegate void delegateClick();
        //定義一個事件
        public event delegateClick eventClick;
        //引發事件的方法
        public void onClick()
        {
            eventClick();//被引發的事件
        } 
    }
    class DoClick
    { 
        //定義事件處理方法
        public void doC()
        {
            Console.WriteLine("滑鼠被點選了");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DoClickrunsport = new DoClick();//例項化事件釋出者
            JudgeEvent JudgeE= new JudgeEvent();//例項化事件訂閱者

            //訂閱事件
            JudgeE.evenClick+=new JudgeE.delegateClick(DoClick.doC);

            //引發事件
            JudgeE.onClick();

            Console.ReadKey();
        }
    }
}