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;
  • 相关阅读:
    让WPF的Popup不总置顶的解决方案
    virtio 驱动的数据结构理解
    关于Linux下面msyql安装后并未设置初始密码,但是登录报错“Access denied for user 'root'@'localhost' (using password: NO)”的解决方案
    gulp初涉
    前后端分离--构建前端Mock Server--windows部署rap
    一些css小用法总结(持续更新~)
    js原生封装自定义滚动条
    ie下面兼容性问题的一些总结
    关于html水平垂直居中的一些总结吧
    C# 正则表达式匹配string字符串中的时间串(yyyyMMdd)
  • 原文地址:https://www.cnblogs.com/fengxuehuanlin/p/6503394.html
Copyright © 2011-2022 走看看