大家都来发表下自己的看法:什么情况下用到委托!!

EveryCase 2009-01-13 03:19:41
具体的委托原理就不要在详细的讨论了。
我们就讨论下什么情况下应该用委托!!
我先说一点自己的用途把
1。写自定义控件的的时候用的最多!!
2。2个类之间传递数据的时候可以用(当是目前还没有真正的用过!)
...全文
435 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdhlowforever 2009-04-01
  • 打赏
  • 举报
回复
MARK
king19840811 2009-01-16
  • 打赏
  • 举报
回复
收藏咯
qlzf11140820 2009-01-16
  • 打赏
  • 举报
回复
委托我用于传参,线程,。。。
abcyzq 2009-01-16
  • 打赏
  • 举报
回复
学习。
zxl1102003 2009-01-16
  • 打赏
  • 举报
回复
委托你不用都不行,LINQ中大量用到了这个东东
cjz491 2009-01-16
  • 打赏
  • 举报
回复
zxc委托就是调用一个不确定的方法,不确定的方法一般就不会是自己写的方法,
wangping_li 2009-01-16
  • 打赏
  • 举报
回复
上面的new Predicate<TransportOrderFullSDO>可以省略的,直接像FindAll一样用(delegate...就行了
就如superdullwolf说的,是凡带I开头的接口,都可以用delegate来实现.
wangping_li 2009-01-16
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 superdullwolf 的回复:]
List.Sort(delegate(参数){compare实现});

这个用的比较多,用委托来实现Icompare接口.
[/Quote]
类似的还有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);
}
gzdiablo 2009-01-16
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 superdullwolf 的回复:]
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); });


这个是一个非常实用的写法,请熟练.
[/Quote]
匿名委托 光知道有这个东西 可惜从来没用过.

其实很多地方都需要用委托,常用的还有Array.ConvertAll等等.

我刚开始也不大理解什么是委托,后来结合js理解
才发现.net下的委托 其实就是强类型的js下的function而已

后来使用反射技术的时候经常会用到委托
denglei12 2009-01-15
  • 打赏
  • 举报
回复
看来我对委托了解得不够,要再复习一下才行啊!
超级大笨狼 2009-01-15
  • 打赏
  • 举报
回复
List.Sort(delegate(参数){compare实现});

这个用的比较多,用委托来实现Icompare接口.
ming_caca 2009-01-15
  • 打赏
  • 举报
回复
和很多人一样,我也始终搞不太清楚 委托 怎么用,之前看书的时候,看到这一章看得我头晕眼花。。

但是昨天我用了一次委托。 是用在不同的类里面调用EVENT的时候用的,就是在一个类里面,如果Event A 发生了,就会引发在另一个类里面的event B.

其实很多知识点,看过之后就忘了。。觉得还是要多练习。。。功多艺熟,是不变的真理
cuike519 2009-01-15
  • 打赏
  • 举报
回复
和接口一样,需要抽象的地方都能用委托。

委托可以理解为动态接口。。。
lovehongyun 2009-01-15
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090115/00/cc7eaa2c-025d-41f7-a1c5-def1fec6e1b2.html

看这个帖中,我在6楼写的例子.
Dobzhansky 2009-01-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zgke 的回复:]
在你不知道怎么写的时候就写委托把
[/Quote]

C++ 作者刚进入 贝尔 的时候, 好像别人也是这么给他说的,
不过说的是指针,


委托 函数指针
jacklee_008 2009-01-15
  • 打赏
  • 举报
回复
up
Isbaihe 2009-01-15
  • 打赏
  • 举报
回复
刚学C# 就知道委托的参数可以是方法。。。其他了解不多。
nmfengyun 2009-01-15
  • 打赏
  • 举报
回复
[code=MSDN]
在以下情况中使用委托:

当使用事件设计模式时。

当封装静态方法可取时。

当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。

需要方便的组合。

当类可能需要该方法的多个实现时。

[/code]
超级大笨狼 2009-01-15
  • 打赏
  • 举报
回复
是凡带I开头的接口,都可以用delegate来实现.
比如ICompare
List <我自己的类> myList =new List <我自己的类>();
myList.Add(实例1);
myList.Add(实例2);
myList.Add(实例3);

myList.Sort(delegate(我自己的类 x, 我自己的类 y) { 我自己的类的某属性的比较,返回正负1和0就行});
koukoujiayi 2009-01-15
  • 打赏
  • 举报
回复
mark
加载更多回复(26)
想每月25号,信用卡自动还款想每年4月1日自己给当年暗恋女神发一封匿名贺卡想每隔1小时,备份一下自己的爱情片 学习笔记到云盘这些问题总结起来就是:在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事。 以上这些是我们日常常见的任务调度需求,企业里面会有大量的任务调度需求,可以说任务调度是一个企业很重要的一部分。传统的定时任务有很多的缺点,1、不支持集群:集群情况下容易造成任务重复问题2、不支持失败重试:失败即结束,不支持重试3、不支持动态调整:修改任务参数时需要修改代码,并且要重启服务4、无报警机制:任务失败后没有提醒功能5、无统一管理:没有办法手动关闭或开启任务针对上面的一些问题和缺点,XXL-JOB可以实现我们的需求。 XXL-JOB是一个开源的,具有丰富的任务管理功能以及高性能,高可用等特点的轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展、开箱即用!!! 课程会带大家构建XXL-JOB调度平台,实战讲解多种类型任务调度配置,会基于大数据推荐系统案例讲解XXL-JOB使用,让大家在实战中掌握XXL-JOB。课程所用的开发环境为:Window10 开发工具:IDEA 本课程用到技术:XXL-JOBKafkaHiveHadoopSparkFlumeMySQLZookeeper等 

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧