zoukankan      html  css  js  c++  java
  • EventHandler 与常见的.Net预定义委托

    看着下面这两句事件定义及激发忽然有点不明白了,
    
    public event EventHandler<ExternalDataEventArgs> Submit;
    
    Submit(null, args);
    
     
    
    貌似该事件定义时只传一个参数args, 但实际激发时要传两个参数, 咋回事捏!
    
     
    
    其实, 这是误解,  这个EventHandler<ExternalDataEventArgs>是个泛型版的预定义委托, 该委托实际的定义如下:
    
    public delegate void EventHandler<TEventArgs> (
    Object sender,
    TEventArgs e
    ) where TEventArgs : EventArgs
    
    而非泛型版的定义如下:
    
    public delegate void EventHandler (
    
      Object sender,
    
      EventArgs e
    
    )
    
    
    这样就明白了, 事件确实是需要两个参数.
    
     
    
    推荐资料: .NET Framework委托的预定义方法介绍
    
    http://webservices.ctocio.com.cn/net/430/9352430.shtml
    
     
    
    此文中这段甚对, "从.NET Framework2.0开始以来,系统预定义的委托使使代码看起来有点像“天书”,再加上匿名表达式,以及后面Lambda表达式的“掺和”,代码就更加难懂了."
    
    因此,多梳理,多熟悉一下才行。
    
    类似的预定义委托还有:
    
    1.Action 封装1-16个参数, 无返回值.
    
    public delegate void Action<in T>(
     T obj
    )
    
    public delegate void Action<in T1, in T2>(
     T1 arg1,
     T2 arg2
    )
    
    2.Func 封装1-16个参数, 返回值TResult.
    
    public delegate TResult Func<out TResult>(
    
    )
    
    public delegate TResult Func<in T, out TResult>(
     T arg
    )
    
    3.Predicate 表示定义一组条件并确定指定对象是否符合这些条件的方法。
    
    public delegate bool Predicate<in T>(
     T obj
    )
    
     
    
    推荐资料:
    
    EventHandler 泛型委托
    http://msdn.microsoft.com/zh-cn/library/db0etb8x(v=VS.80).aspx
    
    Action<T> 委托
    http://msdn.microsoft.com/zh-cn/library/018hxwa8.aspx
    
     
    
    Func<TResult> 委托
    http://msdn.microsoft.com/zh-cn/library/bb534960.aspx
    
     
    
    Predicate<T> 委托
    http://msdn.microsoft.com/zh-cn/library/bfcke1bz(v=VS.100).aspx
    
     
    
     
    
     
    
     
    
    作者:BobLiu 
    邮箱:lzd_ren@hotmail.com
    出处:http://www.cnblogs.com/liuzhendong
    本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    改善ERP的用户体验,个性化用户界面(Jquery 提供源码)
    一个美国富人在洗手间里陪女佣孩子吃晚餐的故事
    easyui datagrid 批量 提交 json 数据到服务器
    XML基础
    Asp.Net 上传大文件专题(1)概述:上传大文件的难点
    Asp.Net 上传大文件专题(3)从请求流中获取数据并保存为文件[下]
    Asp.Net上传大文件系列
    Asp.Net 上传大文件专题(3)从请求流中获取数据并保存为文件[上]
    XM操作类
    Asp.Net 上传大文件专题(4)利用ajax技术显示上传进度
  • 原文地址:https://www.cnblogs.com/xyzhuzhou/p/4691320.html
Copyright © 2011-2022 走看看