首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于C#委托的一个有关问题(小弟我刚接触C#希望大家多多帮助)

2012-01-09 
关于C#委托的一个问题(我刚接触C#,希望大家多多帮助)想请教各位一个有关C#委托的问题:有这样一条语句pollT

关于C#委托的一个问题(我刚接触C#,希望大家多多帮助)
想请教各位一个有关C#委托的问题:
有这样一条语句
pollTimer.Elapsed   +=   new   ElapsedEventHandler(CheckForMessage);  
函数签名是:private   void   CheckForMessage(object   source,   ElapsedEventArgs   e)  
把签名改成:private   void   CheckForMessage(object   source,   EventArgs   e)   仍然没问题  
甚至改成private   void   CheckForMessage(object   source,   object   e)   也没问题   这是为什么?  
委托不是要匹配函数签名的么?

[解决办法]
支持自动转型。即使是返回值也可以向下兼容
[解决办法]
ElapsedEventArgs 是从 EventArgs 继承 来的


定义的肯定是基类

如果定义子类 积累就不能用
[解决办法]
这是2.0中一个总是被人忽视的新特性,委托的协变和逆变。

详情请打开你的VS帮助,索引协变,或者参阅下面地址:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/e6acad03-93e0-4efb-a158-8696d5eb4ecf.htm

热点排行