您的位置:程序门 -> .net技术 -> c#



关于c#委托的一个问题(我刚接触c#,希望大家多多帮助)


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于c#委托的一个问题(我刚接触c#,希望大家多多帮助)[已结贴,结贴人:molezz]
发表于:2007-05-01 09:49:21 楼主
想请教各位一个有关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)   也没问题   这是为什么?  
委托不是要匹配函数签名的么?
发表于:2007-05-01 09:58:431楼 得分:0
帮顶
发表于:2007-05-01 10:20:072楼 得分:0
快沉了,顶一下。各位大虾,有知道的吗?
发表于:2007-05-01 10:39:533楼 得分:1
支持自动转型。即使是返回值也可以向下兼容
发表于:2007-05-01 10:46:284楼 得分:0
谢谢楼上的!   也就是说只要函数签名是定义委托时的基类都可以吗?
发表于:2007-05-01 11:00:105楼 得分:3
elapsedeventargs     是从   eventargs   继承   来的


定义的肯定是基类

如果定义子类       积累就不能用
发表于:2007-05-01 11:35:466楼 得分:0
不太明白楼上说的
 
委托的定义是:
public   delegate   void   elapsedeventhandler(object   sender,   elapsedeventargs   e);
elapsedeventargs的定义是这样的:
public   class   elapsedeventargs   :   eventargs
        {

                public   datetime   signaltime   {   get;   }
        }
}
发表于:2007-05-01 12:34:237楼 得分:6
这是2.0中一个总是被人忽视的新特性,委托的协变和逆变。

详情请打开你的vs帮助,索引协变,或者参阅下面地址:
ms-help://ms.vscc.v80/ms.msdn.v80/ms.visualstudio.v80.chs/dv_csref/html/e6acad03-93e0-4efb-a158-8696d5eb4ecf.htm
发表于:2007-05-01 17:06:158楼 得分:0
.net   2.0对委托加强了很多。
发表于:2007-05-01 17:26:119楼 得分:0
以前没注意过,学习
发表于:2007-05-01 18:12:2410楼 得分:0
up!
发表于:2007-05-01 19:36:4411楼 得分:0
明白了   谢谢各位了


快速检索

最新资讯
热门点击