1、委托是什么

         委托是一种数据类型,正如intstringclass等一样,不过这个shuju类型承载的是方法,条件是:这个方法的签名必须和委托在声明时的签名相同,否则不能将这个方法付给这个委托

         eg. delegate void calculate(int x,int y)//声明一个委托

 

         如果想把一个方法付给这个委托,对这个方法的要求是:必须有两个int类型的参数,并且无返回值,这样的方法才能被付给这个委托变量

 

         calculate calcul;//声明一个委托变量,就像int i,声明一个int类型的变量一样一样

        

         void add(int x,int y)

         {

                   x+y;

         }

 

         以上的这个方法就可以赋给calcul委托变量

 

2、委托有什么用?

         1)可以把它作为一个参数传给一个方法,比如说,有一个需要计算的方法DoCalculator (),他要进行加减乘除四个运算,在以前的话要,需要用if 条件语句判断

                  

                   void DoCalculator(int x, int y)

        {

                if (该运算是加法)

                            {

进行加法运算

}

 

if (该运算是减法)

                            {进行减法运算}

 

if (该运算是乘法)

                            {进行乘法运算}

 

if (该运算是除法)

                            {进行除法运算}

 

        }

 

加入以后又增加了复数运算,则还要不厌其烦地写if 。。。else 语句,很是烦人,现在有了委托,一切变得简便起来,我不是把这些具体实现某一功能的方法(即上面的加减乘除四个方法)写进DoCalculator()方法里来,而是传递一个参数给这个委托给这个DoCalculator方法,这个参数就是委托,他的签名和加减乘除四个方法的一样,故他能代表这四个方法执行某一特定的运算,打个比方来说,这个委托就是一个加、减、乘、除这四个方法选出来得一个代表,他为什么能代表他们四个呢,因为他的签名和他们四个的一样。当调用DoCalculator方法时,要传一个参数给他,这个参数就是“加”、“减”“乘”“除”四个中的一个,以执行某一计算

 

         如果以后添加了一个复数的计算,则只需另外定义一个复数相加的方法,然后把这个方法传给DoCalculator这个方法就可以用DoCalculator进行复数运算了

 

 

2、他可以在两个对象之间传递信息

 

比如说有两个窗体,分别为a,b,现在通过点击a窗体,然后在b窗体上显示点击的次数,这是就可以在公共程序立定一个委托,暂且叫她showMessage吧,public delegate void ShowInfoDelegate(string info);

b窗体根据这个委托的签名定义一个方法,这个方法用于把传进来得参数显示在窗体B上,然后在A窗体定义一个该类型的变量,假如叫count吧,把点击的次数数据保存在count变量里,最后把在B窗体里把定义的显示方法付给这个count变量

posted on 2011-08-07 22:03  杨子涵  阅读(214)  评论(0编辑  收藏  举报