C#自定义事件的理解

以前一直对C#中的事件理解不是全面,经常看到已经定义好的某个事件,但是一直都没有看到实现该事件的注册方法,一直不解,今天突然理解了是怎么一回事!下以是代码:

首先定义一个委托类:

/// <summary>
    /// 开始异步请求
    /// </summary>
    /// <param name="url">请求地址</param>
    /// <param name="requestContent">请求内容</param>
    public delegate void AsyncBeginRequestHandler(string url, string requestContent);

接下来定义一个HandlerEventDemo类,代码如下:

 public class HandlerEventDemo
    {
        /// <summary>
        /// 开始异步请求时事件
        /// </summary>
        public event AsyncBeginRequestHandler OnAsyncBegin;    
    
         /// <summary>
        /// 异步提交的方法
        /// </summary>
        public void AsyncPost(string Url, string Content,string name)
        {
            if (OnAsyncBegin != null)
            {
                OnAsyncBegin(Url, Content);
            }
     } }

 经常我们会看到代码写到这里就完了,然后在项目里也找不到这个事件用法,于是就有一个疑问,为什么定义了这个事件,又在项目里没有运用到。

如果要在项目中用到的话就应用以下代码:

public class  Test
{

 protected void TestMethod(object sender, EventArgs e)
    {
       //将方法注册到事件上
        OnAsyncBegin += new AsyncBeginRequestHandler(_Default_OnAsyncBegin);
        if (OnAsyncBegin != null)
        {
            OnAsyncBegin("测试", "请求内容!");
        }
    }

    void _Default_OnAsyncBegin(string aaa, string requestContent)
    {
        //这里就是调用事件具体要实现的代码
        throw new NotImplementedException();
    }
}

为什么在项目中没有调用自己定义的事件呢?我的理解是因为这个事件暂时在项目中不需要用到,所以就没有调用。那为什么还要定义呢?是这样的,如果项目遇到新需求的话,说不定就要用到,所以这个自定义事件是预留的。

如果还不理解的话,就控件来说吧,比如Button控件,Button控件有很多事件,然而我们一般只用OnClick事件,而其它事件很少用,那其它没有用的事件都是预留事件。现在理解了没有呢?好了,先就这样了。

转载于:https://www.cnblogs.com/xiao_haun/archive/2013/04/03/2998424.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值