博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
说说C#委托
阅读量:5089 次
发布时间:2019-06-13

本文共 1713 字,大约阅读时间需要 5 分钟。

一听到委托,当然就感觉到这件事情是给某东西去做。

比如,你委托啊新哥去买包烟 ,委托是不是好像只是一种声明一样,真正的动作是去买烟().也就是教材书上说的方法的签名

那先看看委托的声明: public delegate string (string name); //public 修饰符 delegate声明委托的关键字 void 是返回类型 name当然是参数

还要说明的是 委托是一种类型。好了其它的不多说,先来用用委托这东西

委托存储的是方法的地址 买烟 my 所以my我们也就可能是一个方法 既然这个东西这么好,用谁就是指向谁就好,是不是少了很多if swtihc的判断(因为你要谁就指向谁了,当然就有这种感觉呢!) 下面一步一步来体现这种感觉 我们知道打招乎中国人当然是中文,英国人当然是英文 英国人打招乎:
英文    public void EnglishGreeting(string name)    {        Console.WriteLine("Morning"+name);    }

 中国人打招乎:

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

  

如果要加另外一些国家的方法呢??    public enum Language    {         English,Chinese    }    问候人们的方法 ,当然越来越多呢?????    public void GreePeople(string name, Language lange)    {         switch(lange)        {            case Language.English:                EnglishGreeting(name);                break;            case Language.Chinese:                ChineseGreeting(name);                break;        }    }

  上面我们有用枚举和switch分支来判断是那个人打招乎了,并调用某一方法。实现不同国家的人调不同的方法,那问题又来了,哥们如果在加些一法国,德国。。。一些国家

那么这个swtich分支结构就不好写了是不,越来越多了!上面不是说了嘛,用谁就调用谁嘛!把委托当作当参数,用谁就指向谁的方法

private static void EnglishGreeting(string name)        {            Console.WriteLine("Morning," + name);        }        private static void ChineseGreeting(string name)        {            Console.WriteLine("早上好," + name);        }        //用委托类型作为参数来传递        private static void GreePeople(string name, GreetingDelegate MakeGreeting)        {            MakeGreeting(name);        }

  

引用网上看到的一句话:委托是一个类,它定义了方法的类型,

使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,

可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

好了委托就说说这里,也是简单的说了下,希望对朋友们有帮助

 

 

 

转载于:https://www.cnblogs.com/yzenet/archive/2013/04/16/3023741.html

你可能感兴趣的文章