麻烦高手们解释一下什么是代表(也有的称为代理) 现在在看《21天学通C#》但看到代表Delegate不是很理解,感觉云里雾里,麻烦大侠们指点一下小弟先谢过了!~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一开始可以看作函数指针。实现事件(event)机制的基础。可以用delegate异步调用方法。 首先你要区分 delegate 还是 Delegate,这是两个不同的东西。delegate是一个声明类型的关键字,而Delegate则是一个类型。并且Delegate是abstract的。Delegate是一个相当复杂的类(其子类,即你使用delegate声明的类当然更加复杂)。Delegate中保存MethodInfo类型的信息,如果你了解反射就知道MethodInfo、PropertyInfo、FieldInfo。他们可以用来以反射的方式执行(Invoke)或者对值操作(SetValue、GetValue)。系统中对method的存储做了一些优化,使得大量创建使用了相同类型Delegate的对象时可以少占用一些空间。不过这并不重要。知道Delegate有 DynamicInvoke 方法就行了。Delegate自身还是自身的一个集合,使用 += 的形式就可以在null、单个Delegate、多个Delegate俄集合之间自动转换类型,不需要重新定义类型。一个Delegate子类对象,在没有实例化的时候是null,然后你使用 +={一个Delegate} 对它进行操作,它就变成那个Delegate了;如果你继续 +={一个Delegate}操作,它就把那么Delegate与原来曾经合并过的Delegate再合并为更大的一个集合。-= 则是想反的操作,从集合中删除,直到剩下单个Delegate的时候就将Delegate集合类型自动变为单个的Delegate,再次 -= 就变为 null了。既然 Delegate 也可以按需变成 Delegate集合,那么上述操作中的 {一个Delegate} 也适合于 {一个Delegate集合} 的情况。 从Delegate 以及 MulticastDelegate 继承的类型非常多,例如其中一种是 EventHandler 就被很多标准控件使用。这些子类中很多都除了再提供 Invoke执行方法以外也支持异步执行,基本上都使用 BeginInvoke、EndInvoke为方法名称,但是这并不是什么公共接口或者公共父类继承的,而是各个Delegate子类自己定义的私有接口方法,尽管他们恰巧取名相同。关键字 event 将 Delegate 的 +=、-=、激活 单独独立出来,并且隐藏了其它的接口。这是编译器指令,用于隐藏庞大的Delegate定义。一旦使用 event,那么在定义这个事件的类型之外,就能把事件当作普通的 Delegate 使用了,只能使用最严格限制的三、四个操作方法。 就能把事件当作普通的 Delegate 使用 --> 就“不”能把事件当作普通的 Delegate 使用 关于图片存入数据库的问题 大问题 求简单算法 c#项目怎么向系统注册新的文件类型? javascript的nodeName、nodeValue和nodeType在C#的哪里? 在线等。急得要跳楼了。 请问在程序中如何调用某个Button事件 如何从右击的toolstripmenuiterm得到所对应的treeview node的Index 在32位xp上开发的程序 放到win8上出错 浮点值 '636e540' 超出了计算机表示范围(8 字节)。 C#程序如何独立运行(不用安装VS.NET)???请各位大虾指教! 用foreach可以控制行数吗?
实现事件(event)机制的基础。
可以用delegate异步调用方法。