为什么声明委托类型的时候后面要加();它不是一个类吗?正常的话类后面是加一个{};而它为什么要加();或者说为什么要这样设计。
为什么调用委托实例的时候后面要加();正常的话调用某个对象,我们不是直接 Class.xx就可以了吗?只有调用方法的时候是xx();既然委托是一个类,那它的实例就是一个对象,为什么后面要加();求大神指教
委托是一种特殊的类,其派生关系如下
yourHandler->MulicastDelegate->Delegate
这个关系你可以从其BaseType中看到。
说它特殊就特殊在它的申明方式和普通对象的不一样,而且每当你创建了这个对象后就会继承3个方法下来(invoke及异步的两个),而这样设计(表述)的方式你要去问看CLI了。
说其特殊性,也就是你大括号小括号的问题吧,这个其实也只是一个表达的问题,到至少需要满足一个要求,委托既然定义为类型安全的方法指针,那么用小括号就不足为奇了吧。比如
Result dummyMethod(object sender,Paramter args)这样一个方法现在对应的其委托方法写法
delegate Result yourDelegate(object sender,Paramter args)表意其实很清楚了。
如果你写成delegate Result yourDelegate{object sender,Paramter args},这个我觉得还好吧(当然语法不支持)。
调用的时候你也可以写完整:
xxxHandler.Invoke(parameter here),不写Invoke只是个语法糖而已,其il还是Invoke了。
很厉害,有自己的见解,佩服你们
你好,我怎么可以看他的CLI呢
@痴王: 我记得ms还是哪有cli的文档,相当大的一个pdf,里面介绍的相当详细。
委托是一个方法签名.
方法签名意思就是方法吧
@痴王: 不是.方法签名是一个方法的结构描述.
用来确定你要调用的放的参数和返回值结构.这样使用者就可以不关心方法的具体实现.
只要方法签名一样.就能调用.而不管这个方法里面到底是什么代码
@吴瑞祥: ok,我明白了,您说如果归类,要把方法签名这个知识点放在方法下面吗?还是放在哪块比较好
@痴王: 不知道.
我学这个的时候是有2次的.
一次是c++程序设计.我记得是在模版里讲的.相当于是和泛型一起
c#高级程序设计里.就忘了是那里的.这些东西找本教科书吧.照着教科书里的顺序是最好了
@吴瑞祥: 嗯嗯,好的,谢谢大师