黑马程序员——对委托的初步理解

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

    今天看到论坛里有人问委托的问题,想想自己也搞不懂委托到底是什么东西,好像以前稍微看过一点但没具体怎么看,所以今天就看了一些资料。

    看完后,我的理解是这样的,这只是初步的理解,不对的请见谅,希望提出来,共同进步。

    委托呢其实就是一个方法的大集合,就像枚举一样,它把要用的方法都存到了里面,当要调用什么方法的时候就直接写出这个方法的名字,就能够实现调用,特别方便,避免了复杂的判断过程,这样说可能很难理解,我在博客原理看的一篇讲解文章,人家举了一个相当浅显易懂的例子。

    列子如下:

public void EnglishGreeting(string name) {
    Console.WriteLine("Morning, " + name);
}

public void ChineseGreeting(string name){
    Console.WriteLine("早上好, " + name);
}

public enum Language{     //定义枚举
    English, Chinese
}

public void GreetPeople(string name, Language lang){
        swith(lang){
        case Language.English:
           EnglishGreeting(name);
           break;
       case Language.Chinese:
           ChineseGreeting(name);
           break;
    }
}

大家看到了,上面有两个方法一个是中文问好:ChineseGreeting,一个英文:Console.WriteLine("Morning, " + name);

由于遇到中国人要用中文方法,外国人要用英文方法,所以就得定义个枚举用swith case进行判断,这是不是很麻烦??

还好有委托帮咱们大忙,修改上面的代码

public delegate void GreetingDelegate(string names);  //委托

    class Program
    { private static void EnglishGreeting(string name) {
               Console.WriteLine("Morning, " + name);
           }

           private static void ChineseGreeting(string name) {
               Console.WriteLine("早上好, " + name);
           }

           //注意多了个参数makegreeting,这个参数就是指定委托哪个方法去执行
           private static void GreetPeople(string name, GreetingDelegate MakeGreeting)
           {
               MakeGreeting(name);
           }

调用GreetPeople

 static void Main(string[] args)
        {
            GreetPeople("Jimmy Zhang", EnglishGreeting);
            GreetPeople("张子阳", ChineseGreeting);
            Console.ReadKey();
          

        }

看出来了吧,委托就是这样简单,说白了就是委托给谁去办这件事。

 

 

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

转载于:https://www.cnblogs.com/weiwin/archive/2012/06/29/2570368.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值