`

lambda表达式1

阅读更多
Lambda表达式

Sample 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    public delegate int mydg(int a,int b);
    public static class LambdaTest
    {
        public static int oper(this int a, int b, mydg dg)
        {
            return dg(a, b);
        }
    }
    class Program
    {

        static void Main(string[] args)
        {
            Console.WriteLine(1.oper(2, (a, b) => a + b));

            Console.WriteLine(2.oper(1, (a, b) => a - b));

            Console.ReadLine();
        }
    }
}


运行结果:
3
1


分析:
1、    public delegate int mydg(int a, int b);
非常重要,代理,Lambda表达式就是delegate
2、 public static int oper(this int a, int b, mydg dg)
静态方法,结合this的使用,可以通过这种方式对已有类添加方法。
不过这里添加的方法是Lambda表达式。
3、1.oper(2, (a, b) => a + b)
实际执行的是LambdaTest.oper(1,2,(a,b)=>a+b);
补充,所有的类的方法基本上都是用这种方式来执行的。


Sample 2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    public class Person
    {

        public string username { get; set; }

        public int age { get; set; }



        public override string ToString()
        {

            return string.Format("username:{0} age:{1}", this.username, this.age);

        }

    }


    class Program
    {

        static void Main(string[] args)
        {
            var persons = new List<Person> {

    new Person {username = "a", age=19}, 

    new Person {username = "b", age=20},

    new Person {username = "c", age=21}, 

    };
            var selectPerson = from p in persons where p.age >= 20 select p.username.ToUpper();
            foreach (var p in selectPerson)
                Console.WriteLine(p);
            Console.ReadLine();

        }
    }
}


分析:
  var selectPerson = from p in persons where p.age >= 20 select p.username.ToUpper();
等价于:
var selectPerson = persons.Where(p => p.age >= 20).Select(p => p.username.ToUpper());  


2011-6-2 10:17 danny

分享到:
评论

相关推荐

    2_Lambda表达式.zip

    Lambda表达式是Java编程语言中的一个关键特性,自Java 8开始引入,它极大地简化了函数式编程,尤其是在处理集合数据时。Lambda表达式的主要目的是为了创建匿名函数,即没有名字的函数,它可以被当作一个值传递给方法...

    C#lambda表达式的使用

    "C# Lambda 表达式的使用" Lambda 表达式是 C# 编程语言中的一个重要概念,也是函数式编程的基础。Lambda 表达式可以被用作创建委托对象或表达式树类型。所有的 Lambda 表达式都使用操作符“=&gt;“,表示“goes to ...

    Java8的lambda表达式

    1. **什么是Lambda表达式?** Lambda表达式是一种新的语法结构,它可以被看作是一段没有名字的函数。这种函数可以接受零个或多个参数,但不包含任何方法名,只包含一组表达式。Lambda表达式通常用于那些只需要一次...

    Java 8 lambda表达式

    1. **Lambda表达式的基本语法** Lambda表达式的一般形式是`param -&gt; expression`,其中`param`代表参数列表,`-&gt;`是lambda运算符,`expression`是函数体。对于没有参数的lambda,可以省略参数的括号;如果只有一个...

    C#将Lambda表达式转成Sql语句

    1. **创建表达式树**:通过调用`Expression.Lambda`方法,我们可以创建一个表示Lambda表达式的表达式树。 2. **解析表达式树**:通过递归遍历表达式树,我们可以解析出查询操作的细节,如属性访问、条件判断、函数...

    java8 lambda表达式学习总结

    1. **类型推断**:Java 8 可以自动推断Lambda表达式的参数类型,因此在许多情况下,我们无需显式声明类型。 2. **捕获外部变量**:Lambda 表达式可以访问和修改其定义范围内的 final 或基本类型的局部变量。 3. **...

    C++ 中的 Lambda 表达式

    1. **Capture子句**:定义Lambda表达式能够访问哪些外部变量。 2. **参数列表**:定义Lambda表达式的输入参数。 3. **可变规范**:如果Lambda表达式需要修改捕获的变量,则需要这个关键字。 4. **异常规范**:定义...

    C++ 11 lambda 表达式

    C++ 11引入了lambda表达式,这是一个强大的特性,极大地增强了C++的函数式编程能力。Lambda表达式允许在程序中直接定义匿名函数,并且可以直接在需要的地方使用,无需预先声明。这对于处理回调函数、简化算法实现...

    java8lambda表达式Demo

    Java 8 是一个重要的Java平台版本,因为它引入了许多新特性,其中最显著的就是Lambda表达式。Lambda表达式是函数式编程的关键元素,它允许我们以更简洁、更易读的方式编写代码,特别是在处理集合和并发任务时。在这...

    lambda表达式和递归算法

    lambda 表达式和递归算法 lambda 表达式是一种匿名函数,可以用来定义小的、单次使用的函数。它通常用于数据处理、事件处理和其他需要临时函数的情况。lambda 表达式的基本语法是:`lambda arguments : expression`...

    1. lambda 表达式1

    - `[=]`:按值捕获所有变量,意味着在lambda表达式内部创建这些变量的副本,但不能修改它们。 - `[&]`:按引用捕获所有变量,允许在lambda表达式内部读写这些变量。 - `[var]`或`[&var]`:按需捕获单个变量,可以...

    JavaLambda表达式和匿名类.pdf

    Lambda表达式的语法形式为`(parameters) -&gt; expression`,它允许我们直接编写函数体,就像在上述例子中那样,`a1 -&gt; { return 1; }`等。Lambda表达式使得`calc()`方法的实现更加简洁,同时也减少了代码的冗余。 ...

    Lambda表达式的例子

    Lambda表达式是Java 8引入的一种新的编程特性,它极大地简化了函数式编程,并使得代码更加简洁、易读。在Java中,Lambda表达式可以被理解为匿名函数,即没有名字的函数,它可以被当作方法参数传递,或者作为类的成员...

    lambda表达式,示例参考

    1. 定义:Lambda表达式是一种可以被赋值给变量、作为参数传递或作为返回值的函数。它的语法结构为`(参数列表) =&gt; 表达式`或`(参数列表) =&gt; { 函数体 }`。其中,`=&gt;`称为箭头运算符,左边是参数列表,右边是函数体。 ...

    jdk1.8 Lambda表达式

    Java 8 引入的 Lambda 表达式是 Java 编程语言的重大变革之一,它允许以更简洁的方式表示单方法接口的实现,极大地增强了 Java 语言的表达能力,尤其是结合了函数式接口、Stream API 和其他新特性后。接下来,我们将...

    精通lambda表达式: java多核编程

    1. **Lambda表达式的基本语法** Lambda表达式的语法形式为`(parameters) -&gt; expression`或`(parameters) -&gt; { statements }`。其中,`parameters`是输入参数(如果无参数,可以省略括号),`-&gt;`是箭头符号,`...

    将字符串转换为lambda表达式

    例如,`lambda x: x + 1`创建了一个接受一个参数`x`并返回`x + 1`的函数。`lambda`函数通常用于需要一次性、短小的函数,比如作为参数传递给高阶函数,如`map()`、`filter()`或`reduce()`。 将字符串转换为`lambda`...

    Java lambda表达式和JVM字节码功能详解.pdf

    Lambda表达式在编译后的`.class`文件中,通常以`ClassName$Lambda$1`这样的形式命名,其中`ClassName`是包含Lambda表达式的类名,`Lambda$1`表示Lambda表达式的序列号。 在性能优化方面,虽然Lambda表达式提供了更...

    Lambda表达式测试demo

    1. **无参数Lambda**:如果Lambda表达式不接受任何参数,参数列表部分可以为空,如`() -&gt; System.out.println("Hello, Lambda!")`。 2. **单个参数Lambda**:当参数类型可以被推断时,Lambda可以省略参数类型,如`...

    Stream、Lambda表达式练习.doc

    Stream和Lambda表达式实践 在Java中,Stream API是Java 8中引入的一种新的数据处理方式,它可以对集合进行各种操作,如过滤、映射、聚合等。Lambda表达式是Java 8中引入的一种新的函数式编程方式,它可以将函数作为...

Global site tag (gtag.js) - Google Analytics