C#事件(event)解析

本文详细解析了C#中的事件(event)概念,指出事件与异常的相似性和区别,强调事件处理的订阅机制。介绍了创建自定义EventArgs类、事件发生者(Culprit)、事件接收者类的步骤,并通过示例代码展示了事件触发和处理的过程。同时,探讨了事件与委托的联系,指出事件实际上是特殊委托实例,提供了编译级安全保护。
摘要由CSDN通过智能技术生成

事件(event)

  事件类似于异常,因为它们都是由对象引发(抛出),我们可以提供代码来处理事件。但它们也有区别,最重要的区别是并没有与try...catch 类似的结构来处理事件,而必须订阅(subscribe)它们。订阅一个事件的含义是:提供代码,并在事件发生时执行这些代码,它们称之为事件处理程序。在实际编程中,就会有三个对象参与整个活动:(1)事件发生者(2)事件处理者(3)除此之外还有它们的活动平台。事件发生者触发了一个事件,但它并不知道哪个对象或方法将会接受到并处理它触发的事件,它对事件处理的唯一要求就是:通过委托指明处理事件的方法必须有的返回类型和参数。委托是双方的一个桥梁,即.NET Framework中就是委托(delegate)。

我们可以用一个恐怖分子(肇事者)和安全部门的比喻,来说明事件和委托的大概意思,如果不当,请各位拍砖。

1、首先创建一个自己的EventArgs类。
引自MSDN:
EventArgs是包含事件数据的类的基类,此类不包含事件数据,当事件引发不需要向事件处理程序传递状态信息会使用此类;如果事件处理程序需要状态信息,则应用程序必须从此类派生一个类来保存数据。

作案信息使用按键来模拟:派生一个CrimeEventArgs类

// -------------------作案信息
internal   class  CrimeEventArgs: EventArgs
{
    
private char keyChar;
    
public CrimeEventArgschar keyChar ) : base()
    
{
        
this.keyChar = keyChar;
    }


    
public char KeyChar
    
{
        
get
        
{
            
return keyChar;
        }

    }

}


2、再创建一个事件发生者,即肇事者的类Culprit

// -------------------Culprit是肇事者
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值