博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EventHandler 与常见的.Net预定义委托
阅读量:7090 次
发布时间:2019-06-28

本文共 1069 字,大约阅读时间需要 3 分钟。

看着下面这两句事件定义及激发忽然有点不明白了,

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委托的预定义方法介绍

 

此文中这段甚对, "从.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 泛型委托

Action<T> 委托

 

Func<TResult> 委托

 

Predicate<T> 委托

 

转载于:https://www.cnblogs.com/zhangchenliang/archive/2012/08/14/2637458.html

你可能感兴趣的文章
do…while语句
查看>>
网络工程师成长日记413-长安大学交换机项目
查看>>
jenkins
查看>>
设置中奖概率
查看>>
第4章 类名作为形参和返回值
查看>>
Java 正则表达式
查看>>
CentOS6启动过程超详解分析
查看>>
日本互联网巨头Line和Mercari联手打造移动支付服务
查看>>
Rsync远程同步,实现下行 ,上行异地备份。配置rsync+inotify实时备份。
查看>>
狼厂项目实践:通用检索框架准实时流的设计与实现
查看>>
一键LNMP安装了哪些软件?安装目录在哪?
查看>>
企业为什么需要CRM客户管理系统
查看>>
备考干货 | 一份5A学长学姐带你正经“P(ai) M(a) P(i)”的攻略
查看>>
用WAPI安全网卡享受安全的无线网络
查看>>
T-SQL 高级查询
查看>>
编程能力与编程年龄
查看>>
分享学习Python的方法有哪些?
查看>>
怎样把PDF转换成PPT?迅捷PDF转换器来助力
查看>>
PDF怎么设置全屏动画,轻松提高工作效率
查看>>
将现有的VSAN添加至新的VCenter
查看>>