C#的事件,就是定义一个委托事件,事件就是一个委托,然后定义一个触发方法,将你需要激活的事件放入委托事件中,然后调用触发方法,就可以激活事件

转载

事列代码

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;

namespace ConsoleApp1
{

    public class Program
    {
        //自定义委托
        public delegate void MarryHandler(string msg);
        //使用自定义委托类型定义事件,事件名为MarrEvent
        public event MarryHandler MarrayEvent;
        static void Main(string[] args)
        {

            //初始化新郎官对象
            Program bridegroom = new Program();

            //实例化朋友对象
            Friend friend1 = new Friend("张三");
            Friend friend2 = new Friend("李四");
            Friend friend3 = new Friend("王五");

            //使用"+="订阅消息
            bridegroom.MarrayEvent += new MarryHandler(friend1.SendMessage);
            bridegroom.MarrayEvent += new MarryHandler(friend2.SendMessage);

            //使用"-="取消消息
            bridegroom.MarrayEvent -= new MarryHandler(friend2.SendMessage);

            //发出通知
            bridegroom.OnMarriageComing("到时来参见婚礼!");
            Console.ReadLine();

            //输出结果为
            //到时来参加婚礼!
            //张三收到了,到时候来参加
        }
        public void OnMarriageComing(string msg)
        {
            //判断是否绑定了事件处理方法
            if (MarrayEvent != null)
            {
                //触发事件
                MarrayEvent(msg);
            }
        }
    }
    //朋友类
    public class Friend
    {
        //字段
        public string Name;
        //构造函数
        public Friend(string name)
        {
            Name = name;
        }

        //事件处理函数,该函数符合MarryHandler委托的定义
        public void SendMessage(string mssage)
        {
            //输出通知消息
            Console.WriteLine(mssage);
            //对事件做出处理
            Console.WriteLine(this.Name + "收到了,到时候来参加");
        }
    }
}

 

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;

namespace ConsoleApp1
{

    public class Program
    {
        //自定义委托
        public delegate void MarryHandler(object sender, MarryEventArgs e);
        //使用自定义委托类型定义事件,事件名为MarrEvent
        public event MarryHandler MarrayEvent;
        static void Main(string[] args)
        {

            //初始化新郎官对象
            Program bridegroom = new Program();

            //实例化朋友对象
            Friend friend1 = new Friend("张三");
            Friend friend2 = new Friend("李四");
            Friend friend3 = new Friend("王五");

            //使用"+="订阅消息
            bridegroom.MarrayEvent += new MarryHandler(friend1.SendMessage);
            bridegroom.MarrayEvent += new MarryHandler(friend2.SendMessage);

            //使用"-="取消消息
            bridegroom.MarrayEvent -= new MarryHandler(friend2.SendMessage);

            //发出通知
            bridegroom.OnMarriageComing("到时来参见婚礼!");
            Console.ReadLine();

            //输出结果为
            //到时来参加婚礼!
            //张三收到了,到时候来参加
        }
       

        //发出事件
        public void OnMarriageComing(string msg)
        {
            //判断是否绑定了事件处理方法
            if (MarrayEvent != null)
            {
                //触发事件
                MarrayEvent(this, new MarryEventArgs(msg));
            }
        }
    }
    //朋友类
    public class Friend
    {
        //字段
        public string Name;
        //构造函数
        public Friend(string name)
        {
            Name = name;
        }

        //事件处理函数,该函数符合MarryHandler委托的定义
        public void SendMessage(object s, MarryEventArgs e)
        {
            //输出通知消息
            Console.WriteLine(e.Message);
            //对事件做出处理
            Console.WriteLine(this.Name + "收到了,到时候来参加");
        }

    }
    //自定义事件类,并使其带有事件数据
    public class MarryEventArgs : EventArgs
    {
        public string Message;
        public MarryEventArgs(string msg)
        {
            Message = msg;
        }
    }
}

 

posted on 2019-12-27 09:28  红磨坊后的白桦树  阅读(245)  评论(0编辑  收藏  举报