zoukankan      html  css  js  c++  java
  • 委托的定义使用

    一.什么委托:

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

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

    二.委托的定义:

      委托(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;
  • 相关阅读:
    eclipse生成jar包 注意事项!
    java结合testng,利用XML做数据源的数据驱动示例
    2018 计蒜之道 初赛 第二场
    2018 计蒜之道 初赛 第一场
    Tarjan&&缩点简析
    POJ1159
    POJ1080
    POJ1260
    POJ2533&&1836&&3176
    Luogu P1484 种树
  • 原文地址:https://www.cnblogs.com/fengxuehuanlin/p/6503394.html
Copyright © 2011-2022 走看看