zoukankan      html  css  js  c++  java
  • 说说C#委托

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

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

    那先看看委托的声明: 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)语句,同时使得程序具有更好的可扩展性。

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

     
  • 相关阅读:
    项目跟踪管理三个部分
    Element-UI树形结构表格的操作
    简化代码的小知识点
    swiper在vue中正确的使用方法
    如何创建一个新的vue项目
    前端开发常用代码片段(下篇)
    前端开发常用代码片段(中篇)
    前端开发常用代码片段(上篇)
    移动端h5实现复制功能
    最全的页面初始化样式
  • 原文地址:https://www.cnblogs.com/yzenet/p/3023741.html
Copyright © 2011-2022 走看看