• 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"。

  • 相关阅读:
    【流量劫持】SSLStrip 终极版 —— location 瞒天过海
    【流量劫持】沉默中的狂怒 —— Cookie 大喷发
    【流量劫持】SSLStrip 的未来 —— HTTPS 前端劫持
    Web 前端攻防(2014版)
    流量劫持 —— 浮层登录框的隐患
    流量劫持能有多大危害?
    流量劫持是如何产生的?
    XSS 前端防火墙 —— 整装待发
    XSS 前端防火墙 —— 天衣无缝的防护
    XSS 前端防火墙 —— 无懈可击的钩子
  • 原文地址:https://www.cnblogs.com/CarzySunshine/p/6101604.html
Copyright © 2020-2023  润新知