大家都来发表下自己的看法:什么情况下用到委托!! 具体的委托原理就不要在详细的讨论了。我们就讨论下什么情况下应该用委托!!我先说一点自己的用途把1。写自定义控件的的时候用的最多!!2。2个类之间传递数据的时候可以用(当是目前还没有真正的用过!) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己补充一下:委托的异步调用也很有用,特别是在io受限制的情况下使用!比如最长用的socket异步!! Remoting:客户端委托调用服务器端方法. http://topic.csdn.net/u/20090115/00/cc7eaa2c-025d-41f7-a1c5-def1fec6e1b2.html看这个帖中,我在6楼写的例子. 和很多人一样,我也始终搞不太清楚 委托 怎么用,之前看书的时候,看到这一章看得我头晕眼花。。但是昨天我用了一次委托。 是用在不同的类里面调用EVENT的时候用的,就是在一个类里面,如果Event A 发生了,就会引发在另一个类里面的event B.其实很多知识点,看过之后就忘了。。觉得还是要多练习功多艺熟,是不变的真理 List.Sort(delegate(参数){compare实现});这个用的比较多,用委托来实现Icompare接口. List<int> myList =new List<int>(); myList.Add(111 ); myList.Add(67); myList.Add(356); myList.Sort(delegate(int x, int y) { return x.CompareTo(y); });这个是一个非常实用的写法,请熟练. 是凡带I开头的接口,都可以用delegate来实现.比如ICompareList <我自己的类> myList =new List <我自己的类>(); myList.Add(实例1); myList.Add(实例2); myList.Add(实例3); myList.Sort(delegate(我自己的类 x, 我自己的类 y) { 我自己的类的某属性的比较,返回正负1和0就行}); [code=MSDN]在以下情况中使用委托:当使用事件设计模式时。当封装静态方法可取时。当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。需要方便的组合。当类可能需要该方法的多个实现时。[/code] 匿名委托 光知道有这个东西 可惜从来没用过.其实很多地方都需要用委托,常用的还有Array.ConvertAll等等.我刚开始也不大理解什么是委托,后来结合js理解才发现.net下的委托 其实就是强类型的js下的function而已后来使用反射技术的时候经常会用到委托 类似的还有find,findall用的也比较多,并不是一定是通信比较才用的,匿名方法可以减少很多代码如:BusinessAlarmCollection = BusinessAlarmCollection.FindAll(delegate(BusinessAlarmSDO obj) { return obj.Removed == false; }); if (!CheckDownCollection.Exists(new Predicate<TransportOrderFullSDO>(delegate(TransportOrderFullSDO obj) { return obj.ID == var.ID; }))){ CheckDownCollection.Add(var);} 上面的new Predicate<TransportOrderFullSDO>可以省略的,直接像FindAll一样用(delegate...就行了就如superdullwolf说的,是凡带I开头的接口,都可以用delegate来实现. zxc委托就是调用一个不确定的方法,不确定的方法一般就不会是自己写的方法, 委托你不用都不行,LINQ中大量用到了这个东东 如果要在 .htm文件里 通过判断session里面的值,来是否显示某个东西 线程队列的问题 关于音频处理问题 高手指点如何实现这个小功能? windows服务如何打包呀??? 字符串的格式化 在asp.net下可不可以用Sockt传送数据? 如何使用datagrid进行录入,大伙帮帮忙! C#中如何实现,如同C中的fseek的效果,即怎么随机读写文件?而不必把文件全部读入内存? 如何在中文版server 2003中安装英文版VS.NET? 有什么程序、功能是纯粹用 语言自身实现的吗? 菜鸟问题
委托的异步调用也很有用,特别是在io受限制的情况下使用!
比如最长用的socket异步!!
客户端委托调用服务器端方法.
myList.Add(111 );
myList.Add(67);
myList.Add(356);
myList.Sort(delegate(int x, int y) { return x.CompareTo(y); });
这个是一个非常实用的写法,请熟练.
比如ICompare
List <我自己的类> myList =new List <我自己的类>();
myList.Add(实例1);
myList.Add(实例2);
myList.Add(实例3); myList.Sort(delegate(我自己的类 x, 我自己的类 y) { 我自己的类的某属性的比较,返回正负1和0就行});
在以下情况中使用委托:当使用事件设计模式时。当封装静态方法可取时。当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。需要方便的组合。当类可能需要该方法的多个实现时。[/code]
才发现.net下的委托 其实就是强类型的js下的function而已后来使用反射技术的时候经常会用到委托
如:BusinessAlarmCollection = BusinessAlarmCollection.FindAll(delegate(BusinessAlarmSDO obj) { return obj.Removed == false; }); if (!CheckDownCollection.Exists(new Predicate<TransportOrderFullSDO>(delegate(TransportOrderFullSDO obj) { return obj.ID == var.ID; })))
{
CheckDownCollection.Add(var);
}
就如superdullwolf说的,是凡带I开头的接口,都可以用delegate来实现.