首页 新闻 搜索 专区 学院

用EventHandler声明的是类型实质事件还是方法

0
[已解决问题] 解决于 2009-03-13 11:03

有声明如下:

public EventHandler OnThreadEnding;

请问:

1,详细解释该语句的含义

2,此声明语言声明的是类型其实质事件还是方法

问题补充: 后面有这样的代码: this.OnThreadEnding(this.m_nCh, new Utils.CPaySucess(bResult, this.m_thrdNum));//m_nCh是int32型的,Utils.CPaySucess是从System.EventArgs继承而来的. 那么: 既然OnThreadEnding只是一个成员变量,那为什么可以像方法一样可以有参数,可以被调用呢? 别外还有: ATrkCh[i].SendToGsmThrdData.ThrdWorker.OnThreadEnding += new EventHandler(CSendIncre_OnThreadEnding);//ATrkCh[i].SendToGsmThrdData.ThrdWorker是OnThreadEnding所在类的实例. 那么: 上面的代码又把OnThreadEnding当成事件来为它添加事件处理程序的方法.如何解释?
Lucker的主页 Lucker | 初学一级 | 园豆:53
提问于:2009-02-26 11:36
< >
分享
最佳答案
0

只不过这个变量特殊点,不是一般的简单类型,而是EventHandler类型的。
我想楼主是对EventHandler不太熟悉。EventHandler 是一个预定义的委托,专用于表示不生成数据的事件的事件处理程序方法。如果事件生成数据,则必须提供自己的自定义事件数据类型,并且必须要么创建一个委托,其中第二个参数的类型为自定义类型,要么使用泛型 EventHandler 委托类并用自定义类型替代泛型类型参数。若要将事件与处理事件的方法关联,请向事件添加委托的实例。除非移除了该委托,否则每当发生该事件时就调用事件处理程序。 更详细的请楼主看msdn吧。

生鱼片 | 大侠五级 |园豆:5757 | 2009-02-26 12:42
其他回答(2)
0

很明显这是声明了一个类型为EventHandler的成员变量,不是事件也不是方法,仅仅是一个成员变量,如同

public int MyInt;

或者

public string Name;

是一个概念的

Gray Zhang | 园豆:17610 (专家六级) | 2009-02-26 12:37
0

ls 说的对

 

public              EventHandler    OnThreadEnding;

访问修饰符        变量类型             变量名称

张坤1 | 园豆:4 (初学一级) | 2009-02-26 12:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册