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);
            }
    
            
        
    
        }
    }
    
    

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

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

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

  • 相关阅读:
    Postman基本使用
    一分钟应对勒索病毒WannaCry
    使用C语言和Java分别实现冒泡排序和选择排序
    C#快速读写文件
    从一个故事开始谈项目与团队管理
    JavaSE学习总结(八)
    npm 包的 发布 流程
    iOS开发UI篇—Quartz2D使用(矩阵操作)
    iOS开发UI篇—Quartz2D使用(图形上下文栈)
    iOS开发UI篇—Quartz2D简单使用(三)
  • 原文地址:https://www.cnblogs.com/linjiancun/p/1797077.html
Copyright © 2011-2022 走看看