码迷,mamicode.com
首页 > 其他好文 > 详细

泛型委托事件详解示例

时间:2020-02-29 00:49:14      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:mamicode   结构   关联   传递   允许   派生   nbsp   图片   就是   

使用委托时要先实例化,和类一样,使用new关键字产生委托的新实例,然后将一个或者多个与委托签名匹配的方法与委托实例关联。随后调用委托时,就会调用所有与委托实例关联的方法。

与委托关联可以是任何类或者结构中的方法,可以是静态方法,只要是可以访问的方法都可以。创建一个委托类型使用关键字delegate(委托)

技术图片

技术图片

一个委托实例,关联三个方法

技术图片

 

 移除一个委托实例中的方法  使用“-”

技术图片

将方法作为参数传递

委托可以让方法作为参数传递给其它方法。

技术图片

技术图片

技术图片

 事件自身就是委托类型,由于委托可以绑定和调用多个方法,所以会为事件的处理带来方便。类型只需要对外公开事件,就可以与外部的其它地方关联,从而实现事件订阅

要在类中声明事件,首先要定义用来作为事件封装类型的委托,用event关键字来声明事件。为了允许派生类重写引发事件的代码,通常会在类中声明一个受保护的方法,习惯上

命名On<事件名>

 技术图片

技术图片

protected virtual    表示受保护的,virtual 关键字用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。

由于不同的事件要传递的参数不同,更多时候是从EventArgs类派生的子类的实例,显然EventHandler委托时不能满足各种情况的。

如果针对不同的事件也定义一个对应的委托,数量一旦多起来,不好管理,为了解决这个问题,.NET类库提供了一个带有泛型参数的事件

处理委托。

public delegate void EventHandler<TEventArgs>(object sender,TEventArgs e);   TEventArgs 是一个泛型参数

技术图片

技术图片

泛型委托事件详解示例

标签:mamicode   结构   关联   传递   允许   派生   nbsp   图片   就是   

原文地址:https://www.cnblogs.com/Freedom0221/p/12381191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!