C#学习笔记(2):Event

本文介绍了事件在编程中的概念,通过C#代码展示了如何在CarDealer类中发布新车信息,Consumer类作为订阅者接收并处理这些信息。实例演示了订阅、取消订阅以及多订阅者的效果。
摘要由CSDN通过智能技术生成

1.定义

事件可以在某个类或对象发生一些事情时,通知其他类或对象。
比如Button控件,当我们绑定click事件后,点击按钮,就会触发对应的方法。
发送/触发事件的类叫做发布者(Publisher),接收/处理事件的类叫做订阅者(Subscribers)。

2.简单实现

有这样一个场景,当发布者添加新的汽车信息时,订阅者可以收到新消息的通知:
下面创建两个类:CarDealer (发布者)和 Consumer (订阅者)

public class CarInfoEventArgs: EventArgs
{
    public CarInfoEventArgs(string name)
    {
        this.Car = name;
    }

    public string Car { get; private set; }
}

public class CarDealer
{
    public event EventHandler<CarInfoEventArgs> CarInfoEvent;

    public void NewCar(string car)
    {
        Console.WriteLine("New Car is {0}", car);
        RaiseConsumerEvent(new CarInfoEventArgs(car));
    }

    private void RaiseConsumerEvent(CarInfoEventArgs e)
	{
	    CarInfoEvent(this, e);
	}
}
public class Consumer
{
    public Consumer(string name)
    {
        this.Name = name;
    }

    public string Name { get; private set; }

    public void HandleCarInfo(object sender, CarInfoEventArgs e)
    {
        Console.WriteLine("{0}: New Car is {1}", Name, e.Car);
    }
}

然后,在Main函数里面声明调用

var carDealer = new CarDealer();

var Tom = new Consumer("Tom");

carDealer.CarInfoEvent += Tom.HandleCarInfo;

carDealer.NewCar("Mecerdes");

运行结果:

New Car is Mecerdes
Tom: New Car is Mecerdes
New Car is Mazda
Tom: New Car is Mazda
Jerry: New Car is Mazda
New Car is ferrari
Jerry: New Car is ferrari

第一次Tom订阅了,Tom收到消息,第二次增加了Jerry订阅,所以它们两都收到了消息,第三次Tom取消了订阅,只有Jerry收到了消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值