• 委托的定义使用


    一.什么委托:

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

      • 在方法重载的上下文中,方法的签名不包括返回值
      • 在委托的上下文中,方法的签名是包含返回值的

    二.委托的定义:

      委托(delegate)的声明的语法如下:

        public delegate void Del(string parameter);

      委托的使用方法:

    public delegate void Del(string parameter);//声明委托
    class Program
    {
        static void Main(string[] args)
        {
            Del del = WeiTuo;  //指向具有相同签名的方法
            del("ok");     //通过委托来进行调用
            Console.ReadKey();
        }
        public static void WeiTuo(string str)//与声明有相同的签名
        {
            Console.WriteLine("委托"+str);
        }  
    }
    View Code

    三.委托的属性概述:

      1. 类似于C和C++中的函数指针,但他们是类型安全的
      2. 允许将方法作为参数进行传递
      3. 可用于定义回调方法
      4. 委托类型派生自.NET Framework中的Delegate类,委托类型是封装的,不能派生出其他类

    四.委托的简单演化过程:

    public delegate void MyDel();
    class Program
    {
        static void Main(string[] args)
        {
            MyDel del1 = new MyDel(WeiTuo);  //大于等于C#1
            MyDel del2 = WeiTuo;            //大于等于C#2,上面的简化版
            MyDel del3 = delegate()
            {
                Console.WriteLine("匿名方法委托");
            };
            MyDel del4 = () => {
                Console.WriteLine("lambda表达式");
            };
            del4();
            Console.ReadKey();
        }
        public static void WeiTuo()
        {
            Console.WriteLine("委托");
        } 
    }

    五.泛型委托:

      Action(无返回值泛型委托)  

             

      Func(有返回值泛型委托)

          

    Func<int,bool>表示:int为输入参数,bool为返回值
    Func<int,int,bool>表示:2个int为输入参数,一个bool为返回值

    六.Lambda简介:

       Lambda表达式,是一种简化的匿名函数。可以用于创建委托或表达式目录树。其次,也可以将Lambda表达式作为参数进行传递

           匿名方法:  

              //定义委托
              delegate void Add(int a,int b);
              //实例委托,使用匿名方法
              Add add = delegate(int a, int b)
                    {
                      Console.WriteLine(a + "+" + b + "=" + (a + b));
                    };
            调用:
              add(10,29);
     
    Lambda的诞生:

      Lambda表达式的语法基本形式:

        基本形式:(输入参数)=>表达式

             (输入参数)=>{表达式}

    写法:
    ()=>true; X=>x==1; (X)=>x==1; (x,y)=>x==y;
  • 相关阅读:
    深入理解Elasticsearch写入过程 使用routing会导致docid不再全局唯一 Allocate策略 + routing参数
    force merge原理 + ES写入数据的过程
    Linux内核参数--time-wait回收--不建议设置
    elasticsearch迁移--利用腾讯云cos和nfs
    蓝鲸安装失败
    Apache Tomcat/8.5.51 secretRequired="true"
    自定义Nginx返回页面
    本地yum 源 iso文件 安装ansible
    elasticsearch字段属性值截断为32位
    rabbitmq-consul-apollo部署文档
  • 原文地址:https://www.cnblogs.com/fengxuehuanlin/p/6503394.html
Copyright © 2020-2023  润新知