• C#,委托,匿名委托,Lambda表达式


      1. 委托是什么?

        (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型

          (2) 从设计模式来讲,委托(类)提供了方法(对象)的抽象。概括的说:委托是方法的抽象。

      2. 委托类型的定义:

        委托是类型,就好像类是类型一样。与类一样,委托类型必须在被用来创建变量以及类型对象之前声明。

        委托类型声明:

          (1) 以deleagate关键字开头。

          (2)返回类型+委托类型名+参数列表。

      3. 声明委托变量

          wdd wdd1,wdd2;

      4. 初始化委托变量

        (1) 使用new运算符

          new运算符的操作数的组成如下:

      • 委托类型名
      • 一组圆括号,其中包含作为调用列表中的第一个成员的方法的名字。方法可以是实例方法或静态方法。
      •   class Program
            {
                delegate int delA(int i,int j);

                static void Main(string[] args)
                {

                    delA d = say;
                    Console.WriteLine(d(6,8));
                    Console.ReadKey();
                }
                public static int say(int y,int z)
                {         
                    return y + z;
                }

            }

      6. 组合委托

              委托可以使用额外的运算符来组合。这个运算最终会创建一个新的委托,其调用列表是两个操作数的委托调用列表的副本的连接。委托是恒定的,

      操作数委托创建后不会被改变。委托组合拷贝的是操作数的副本

          delA d = say;
                delA b = say;
                delA c = d + b;
                Console.WriteLine(c(d(1,2),b(1,3)));

      7. 委托加减运算

        可以使用+=运算符,为委托新增方法。

        同样可以使用-=运算符,为委托移除方法。

      8. 委托调用

        委托调用跟方法调用类似。委托调用后,调用列表的每个方法将会被执行。

        在调用委托前,应判断委托是否为空。调用空委托会抛出异常。

      9. 匿名方法

        匿名方法是在初始化委托时内联声明的方法。

        从上面我们可以看到,匿名方法是不会显示声明返回值的

      10. Lambda表达式

        Lambda表达式主要用来简化匿名方法的语法。在匿名方法中,delegate关键字有点多余,因为编译器已经知道我们将方法赋值给委托。

        通过几个简单步骤,我们就可以将匿名方法转换为Lambda表达式:

                 1.删除delegate关键字

                 2.在参数列表和匿名方法主体之间防Lambda运算符=>。Lambda运算符读作"goes to"。

  • 相关阅读:
    tableView.contentInset
    Xcode 显示行数
    翻译技巧2
    程序员的自我修养学习笔记——第一章
    C++11 正则表达式——基础知识介绍
    C++11 正则表达式——实例1
    C++11 多线程
    程序员的自我修养——说明
    C++11 生产者消费者
    C++11 正则表达式——实例3
  • 原文地址:https://www.cnblogs.com/CarzySunshine/p/6101604.html
Copyright © 2020-2023  润新知