zoukankan      html  css  js  c++  java
  • 用lambda表达式声明委托

    首先来分享一段代码:
    Func<int, int, int> addMethod = (int x, int y) => (x + y);
    熟悉的人肯定知道这句话是什么意思,可是不熟悉的人指定一看就头大,这就是会者不难,难者不会。 我来介绍一下上面那句话: 首先介绍赋值号(=)左面Func<int, int, int>,它相当于声明了一个委托private int deletegate TestAdd(int x ,int y ),前两个参数是相应方法的参数类型,最后一个为方法的返回类型。 那么上面的一句话就可以用委托的形式来实现:
    private intdeletegate TestAdd(int x, int b );//定义一个委托,返回值为string类型
    
    private int Add(int x,int y)
    
    {
    
      return x + y;
    
    }
    
    TestAdd t=new TestAdd(Add);
    
    t(4,8);
    小结:我理解这句话就是简化了委托的声明,以及委托的实例化和调用。 但是我觉得和介绍的“Limbda表达式实际上就是一个方法,只不过该方法是匿名方法(即没有名称的方法)”有点区别,感觉可以直接用addMethod当方法用,比如如下:
          int x1 = 5, y1 = 8;
          MessageBox.Show("x1+y1=" + addMethod(x1, y1));
    其实我理解是这样的,当上面的声明都是变量的时候和方法的声明没区别,但是让代码的可读性变难了,但是代码量减少了。 但是从委托的角度上看就和“匿名方法”挂钩了,而且简单了很多,Func<int, int, int>声明了一个委托,而且委托是匿名的,直接来一个委托的实例化,实例化addMethod,且右面的方法也是匿名的。 委托和方法的区别我在这里就不多说了,总之声明出来后就是一个委托实例,其中用到了匿名方法和匿名委托。
  • 相关阅读:
    LeetCode 172. Factorial Trailing Zeroes
    C++primer 练习12.27
    C++primer 练习12.6
    C++primer 练习11.33:实现你自己版本的单词转换程序
    77. Combinations
    75. Sort Colors
    74. Search a 2D Matrix
    73. Set Matrix Zeroes
    71. Simplify Path
    64. Minimum Path Sum
  • 原文地址:https://www.cnblogs.com/vsdot/p/3263433.html
Copyright © 2011-2022 走看看