永发信息网

请问C#中的委托是什么?如何使用?

答案:5  悬赏:80  手机版
解决时间 2021-03-25 19:39
请问C#中的委托是什么?如何使用?
最佳答案
委托的用法很多:一般是用于声明事件和回调的委托,还可以是用于代表方法标签的委托.
书本上的委托只是对委托的定义与具体怎样调用问题,没有涉及到委托的真正实用的地方。其实委托是与事件和回调
一起来使用的,你可以看一下C#异步调用,与多线程处理里等就可以看到委托的作用了。
下面是别人的理解我觉得还是比较好的:
1)有了委托你就可以把方法看作像常数一样,而委托就是该常数类型的变量.
从这个角度看来用于声明事件的委托就是声明这个事件触发以后所调用的方法的标签或者特征.只有符合该标签(参数个数和参数类型)的方法才可以做为该用于该事件的回调.
一个事件触发了,你可能需要用多个方法处理该事件或者说该事件调用了多个方法(每个事件的实例都有一个需要调用的方法列表,当事件触发它会逐个调用列表中的每个方法)
2)通过使用委托你可以实现对方法变化的封装.
打个比方:如果你骑自行车,你需要有骑自行车的方法DriveBike().如果你骑摩托车你需要有骑摩托车的方法.现在你有一个方法DriveMoto.现在你需要定义一个方法,实现你骑(自行车或者摩托车)到某地DriveTo(地点,骑的方式)
骑的方式这里其实就是委托.在使用的时候,如果你是骑自行车你就用DriveBike实例化委托的实例带入DriveTo方法,如果你骑摩托车你就用DriveMoto实例化"骑的方式"这个委托带入DriveTo方法.
全部回答
委托是对方法的抽象,用来实现方法调用的解耦。就来事件为例,事件发表者并不会知道那个方法实现了这个事件的相应。而委托用类做为自己的底层实现,维护着一个委托的堆栈。
直接看MSDN或网上搜的大部分说的都是比较生硬的术语,你可以通俗的理解为将一个方法作为参数传递给另一个方法!也可以理解为:现有N个参数和返回值都相同的方法,在使用的时候根据需要一个个调用太繁琐,干脆把这些方法的规律(方法参数和返回值)总结出来,定义成一个委托!然后把要执行的方法交给委托去执行!+=操作实际上就是委托链,委托一次代理了若干个方法,以后执行时,我们调用委托来执行,委托会把所代理的方法一个个再执行!
委托在.net1.0就有,到了2.0时出现了匿名方法,也就是说委托要执行某一个方法,而这个方法并没有事先定义,随用随定义,连名字都没取,所以叫匿名方法。例:委托实例=delegate(int x,int y){return x+y;}实际就指向一个未取名的方法,而这个方法接收两个int参数,返回和。
到了.net3以后又更进一步,匿名方法还可以简写成:委托实例=(x,y)=>x+y; 这就是传说中的Lambda表达式,其本质是匿名方法,匿名方法本质是委托!
先通俗理解后,再看文档,你会恍然大悟!委托、匿名方法、Lambda表达式的概念其实很重要,如果你不理解的话是没办法学习好LinQ的。
这是我的理解,更多实例,你再搜吧~

委托在C++里就是函数针指,定义了一个相同的函数入口,然后委托对函数抽象出来的结果
 
事件由委托来实现的public delegate void EventHandle(object sender,eventArgs e);//定义委托
public event EventHandle MyDIYEvent;//定义事件

委托还有一个用法是异步
我暂时保留我的看法!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
昆山哪家螺丝工厂,做的非标件好
清朝哪位作者写了一篇悼念亡妻的文章很出名?
2O16年8月2曰云南有台风吗
减肥时说一个月减不到12斤就退款的,后来又给
同一患者使用的呼吸机管路需定期更换吗
某探究小组的同学将铁粉和氧化铜粉末混合均匀
iphone未能激活蜂窝数据网怎么办
热电联产,蒸汽发完电之后再供热发电标煤耗如
王某在施工工地发生车祸是否算交通事故?
有因有好果 散文
没有卑微的工作只有卑微的工作态度这句话是什
三星on7g6000wifi打不开怎么回事
如果1.33虚方等于0.85实方,那么回填一个1立
芭乐和番石榴是同一种水果么
祝老爸66岁生日的话
推荐资讯
母女三代是指
苹安夜上大街送苹果、朋友、你们怎么看
两人属龙结婚登记选择冲龙的日子好吗?
想入个荣耀8,怎么官方都没卖的,停售了吗
日本熟女为了推销保险
任家萱烧伤完全好了? 具体
新人小说,跪求关注
阅读下面短文,将所给的五个句子填入空白处,是
例假没有按时来,怎么回事呢?
电脑上大盘周k线怎么看
什么品牌匀染剂能有效的让织物颜色更加均匀?
超市4周年广告语
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?