事件的处理

事件说白了就是委托,一种特殊的委托。

事件我们可以理解成:消费者向服务者提出服务的方式,然后服务者根据消费者提出的方式去执行服务,比如餐馆与食客。

建立事件的要素:

1.声明一个委托(饭店经营的执照):

public delegate void myDelegate(Custom sender);

2.定义一个提供事件服务的类,里面包含了事件的定义、调用事件执行的方法,当然也可以包含事件委托。

2.1声明一个改委托类型的事件(饭店里的厨子):

public event myDelegate myEvent;

2.2 定义事件执行的方法(厨子做饭)

public void Run(object sender)
{
myServer(sender);
}

3.定义一个使用时间的消费者类,里面包含了 将事件和消费事件方法绑定、消费事件方法的定义
3.1 自身的事件方法和服务类事件挂钩(厨子和执照的对应,没有执照不让开厨子做生意):

public void Customer(Server se)
{
se.myServer+=new Server.myDelegate(this.myCus);
}

3.2消费事件方法(客人提出自己想吃什么,这饭怎么做)

public void myCus(object cs)
{
Console.WriteLine(cs.ToString()+“是消费事件方法”);
}

4主函数中对事件本身触发的使用(主函数相当于饭馆的饭桌):

4.1调用Customer方法(客人来了提出自己想吃什么)

4.2.调用服务类事件执行方法(厨师去按照客人的吩咐做饭)

总览:

class Server
{
public delegate void myDelegate(object sender);
public event myDelegate myServer;
public void Run(object sender)
{
myServer(sender);
}
}
class Custom
{

    public void Customer(Server se)
    {
        
        se.myServer+=new Server.myDelegate(this.myCus);
    }
    public void myCus(object cs)
    {
        Console.WriteLine(cs.ToString()+"是消费事件方法");
    }
}

public class Event
{
    static void Main()
    {
        
        Server server = new Server();            
        Customer cs = new Customer();
        cs.Customer(server);
        server.Run(new Event());
        Console.ReadKey();
    }

  }

一些扩展:

1.在以上的代码中的

server.Run(new Event())

new Event() 这个参数可以变换,因为当初设定服务类中事件运行方法和委托的时候参数是 object类型,所以这里可以是各种对象。这就使委托变得形式多样化。

2.声明委托的时候,也可以独立在类之外,但是参数类型就只能是object,而不是前面提到的Custom,因为委托面向的范围层级不一样。限定具体类类型的委托需包含于类中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值