zoukankan      html  css  js  c++  java
  • 什么叫委托

    委托是一种类,它定义了方法的类型,使得方法可以当作另外一个方法的参数来传递。

    这种将方法动态的赋值给参数的做法。可以避免大量使用if else的做法。同时使得程序有很好的扩展性。

    例:

    没用委托以前的通常代码:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    
    namespace ConsoleApplication1
    {
       public  class Program
        {
            static void Main(string[] args)
            {
    
                getname("pslin",gettyper.en);
                getname("小林", gettyper.ch);
            }
    
           public enum gettyper
           {
               en=1,
               ch=0
           }
    
           public static void getname(string name,gettyper typer)
           {
               switch (typer)
               {
                   case gettyper.ch:
                       ch(name);
                       break;
                   case gettyper.en:
                       en(name);
                       break;
               }
           }
    
           public static void en(string name)
            {
                Console.WriteLine("morning:" + name);
            }
    
           public static void ch(string name)
            {
                Console.WriteLine("早上好," + name);
            }
    
            
        
    
        }
    }
    
    

     委托真的蛮好用的 。

    用了委托后的代码:

    代码
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;

    namespace ConsoleApplication1
    {
    public class Program
    {
    public delegate void gettypername(string name);
    static void Main(string[] args)
    {

    getname(
    "pslin",en);
    Console.ReadLine();

    }



    public static void getname(string name, gettypername typer)
    {
    typer(name);
    }

    public static void en(string name)
    {
    Console.WriteLine(
    "morning:" + name);
    }

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




    }
    }

     我们再精简下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    
    namespace ConsoleApplication1
    {
       public  class Program
        {
           public delegate void gettypername(string name);
            static void Main(string[] args)
            {
    
                gettypername delegate1;
                delegate1 = en;
                delegate1("pslin");
                delegate1 = ch;
                delegate1("小林");
    
                Console.ReadLine();
               
            }
    
        
            public static void en(string name)
            {
                Console.WriteLine("morning:" + name);
            }
    
           public static void ch(string name)
            {
                Console.WriteLine("早上好," + name);
            }
    
            
        
    
        }
    }
    
    

    第一次用委托时,必须用=来赋值方法。

    第二次的话我们可以用“+=”来绑定。

    取消绑定可以用“-=”来取消绑定。

  • 相关阅读:
    vim 使用总结
    C语言中的条件编译
    getopt函数
    Linux 命令使用总结
    vim ctags cscope
    shell 定时处理
    shell 脚本中的标准输出
    ubuntu mail 命令发送邮件
    shell 编程中的特殊字符的处理
    system v 消息队列
  • 原文地址:https://www.cnblogs.com/linjiancun/p/1797077.html
Copyright © 2011-2022 走看看