C# 学习笔记 7.事件

1.什么是事件

事件 - 事件的发布者和事件的订阅者。

2.c#如何定义事件

与定义类的成员非常类似,及需要包含一个 event关键字即可。

访问修饰符 event  委托类型 事件名;

3.如何订阅和取消事件 

//使用.NET类库中预定义的委托类型EventHandler来定义事件

//EventHandler用于处理不包含事件数据的事件

// public delegate void EventHandler(object sender, EventArgs e);

参数1 负责保存对触发事件的引用。

参数2 负责保存事件的数据。


namespace c_sharp_learing
{
    class Program
    {

        public event EventHandler marryEvent;

        public void OnMarryComing( string msg)
        {
            if(marryEvent != null)
            {
                marryEvent(this,new EventArgs());
            }
        }
        static void Main(string[] args)
        {
            Program program = new Program();
            Friend a = new Friend("小张");
            Friend b = new Friend("小李");
            Friend c = new Friend("小王");

            program.marryEvent += new EventHandler(a.SendMessage);
            program.marryEvent += new EventHandler(b.SendMessage);

            program.OnMarryComing("我结婚了呀 ");

            program.marryEvent -= new EventHandler(a.SendMessage);
            program.marryEvent  -=new EventHandler(b.SendMessage);
            program.marryEvent += new EventHandler(c.SendMessage);

            program.OnMarryComing("我结婚了呀 小王");

            Console.ReadKey();
        }
    }
}

public class Friend
{
    public string name_;

    public Friend(string name)
    {
        name_ = name;
    }

    //事件处理函数

    public void SendMessage(object s, EventArgs e)
    {
        Console.WriteLine(name_ + " receive  ");
    }

}
 

4.扩展的Eventagrs类

如果想在事件中包含事件的数据,可以通过派生EventArgs来实现。

5.本质

事件的本质-- 特殊的多路广播委托。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值