首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

浅谈对嘱托的理解-c

2013-02-28 
浅谈对委托的理解--c#这几天看完了C# 视频,其中的一些基础知识,继承,接口,多态等等一些理解的还可以,但是

浅谈对委托的理解--c#

    这几天看完了C# 视频,其中的一些基础知识,继承,接口,多态等等一些理解的还可以,但是又接触到了一个新的词----委托。对此理解的不是很好,在经过深入的查找和学习一些资料后,写下自己的一点理解

    什么是委托?

    生活中:比如说公司老板出差了,那么公司的一些事物就需要人来管理,这时候老板告诉他的秘书在他出差的时间帮助他干什么,这就是委托。

    开发中: 委托也可以看成一种数据类型,可以用于定义量,但是它是一种特殊的数据类型,它所定义的变量类型的数值只能是一个函数,更确切的说,委托类型的变量可以接收的数值只能是函数,委托的变量可以接收一个函数的地址,类似于C++语言的函数指针。

   委托关键字 

      Delegate 

 

 下面看一个小例子来了解一下委托如何应用到代码中 

 

class Program    {        static void Main(string[] args)        {            PrintResule(MathOpt.Add, 4, 5);        }        public static int PrintResule(MathOptDelegate action, int a, int b)        {            int result = action(a, b);            return result;        }    }    public static class MathOpt    {        public static int Add(int arg1, int arg2)        {            return arg1 + arg2;        }        public static int Sub(int arg1, int arg2)        {            return arg1 - arg2;        }    }    public delegate int MathOptDelegate(int value1,int value2);
     通过委托,我们就可以去进行相应的计算了,现在只是初步理解,我想等接触更大的项目会理解的更好吧  

      下面我在用一个通俗的例子来理解一下

        假如说我们早上要吃包子作为早饭,那么我们可能让爸爸或者妈妈给自己做,那你就会调用 

        爸爸.要包子()  

        妈妈.要包子() 

        返回包子对象。

        但是如果你爸妈不在家的时候,你只能去街上买,问题是你根本不知道街上这些人的名字,那你怎么调用呢?

        所以你就要用到委托了,委托就是给你一个协定。

        比如delegate包子要包子();你只需要知道能调用要包子返回一个包子就可以了,根本不需要知道是谁,怎么给你做的包子,就好象你到大街上买是人家自己做的还是工厂做的还是昨天剩下的你都不清楚。包子店就提供了这样一个委托,你只需要到包子店调用要包子()就可以拿到包子了

       就像上述例子中,我们不用知道谁去计算,怎么计算,我们只要发出一个需求,给我计算1+1 给委托,委托就会帮你去完成了,直接返回给你结果。

       总的来说就是:委托适合用在某时或某种情况执行某些事,而这些事你事先并不知道是什么

    

     更直白一点理解,委托应该就是第三方,调用者告诉第三方要做什么,然后调用者就不用管了
      这个委托(第三方)就会去调用方法去帮你实现

     委托的好处:
     1.相当于用方法作为另一方法参数(类似于C的函数指针)
     2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托
     3.当不知道方法具体实现什么时使用委托,如:事件中使用委托

      

    

    以上就是我对委托的一点理解,随着学习的深入还会理解的更深吧!欢迎大家交流指导

       


4楼zwk626542417昨天 21:13
例子非常好,不错。
Re: yudandan10昨天 21:13
回复zwk626542417n吃包子
3楼sunqing0316昨天 21:13
丹丹,优秀的孩子,看好你~
Re: yudandan10昨天 21:13
回复sunqing0316n嘿嘿
2楼kanglix1an昨天 20:42
很好,加油
Re: yudandan10昨天 20:51
回复kanglix1ann嗯嗯 谢谢夸奖
1楼wangxuhebeibd昨天 17:42
生动形象 支持一下
Re: yudandan10昨天 17:43
回复wangxuhebeibdn好的!

热点排行