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
分享到:
相关推荐
Lambda表达式是Java编程语言中的一个关键特性,自Java 8开始引入,它极大地简化了函数式编程,尤其是在处理集合数据时。Lambda表达式的主要目的是为了创建匿名函数,即没有名字的函数,它可以被当作一个值传递给方法...
"C# Lambda 表达式的使用" Lambda 表达式是 C# 编程语言中的一个重要概念,也是函数式编程的基础。Lambda 表达式可以被用作创建委托对象或表达式树类型。所有的 Lambda 表达式都使用操作符“=>“,表示“goes to ...
1. **什么是Lambda表达式?** Lambda表达式是一种新的语法结构,它可以被看作是一段没有名字的函数。这种函数可以接受零个或多个参数,但不包含任何方法名,只包含一组表达式。Lambda表达式通常用于那些只需要一次...
1. **Lambda表达式的基本语法** Lambda表达式的一般形式是`param -> expression`,其中`param`代表参数列表,`->`是lambda运算符,`expression`是函数体。对于没有参数的lambda,可以省略参数的括号;如果只有一个...
1. **创建表达式树**:通过调用`Expression.Lambda`方法,我们可以创建一个表示Lambda表达式的表达式树。 2. **解析表达式树**:通过递归遍历表达式树,我们可以解析出查询操作的细节,如属性访问、条件判断、函数...
1. **类型推断**:Java 8 可以自动推断Lambda表达式的参数类型,因此在许多情况下,我们无需显式声明类型。 2. **捕获外部变量**:Lambda 表达式可以访问和修改其定义范围内的 final 或基本类型的局部变量。 3. **...
1. **Capture子句**:定义Lambda表达式能够访问哪些外部变量。 2. **参数列表**:定义Lambda表达式的输入参数。 3. **可变规范**:如果Lambda表达式需要修改捕获的变量,则需要这个关键字。 4. **异常规范**:定义...
C++ 11引入了lambda表达式,这是一个强大的特性,极大地增强了C++的函数式编程能力。Lambda表达式允许在程序中直接定义匿名函数,并且可以直接在需要的地方使用,无需预先声明。这对于处理回调函数、简化算法实现...
Java 8 是一个重要的Java平台版本,因为它引入了许多新特性,其中最显著的就是Lambda表达式。Lambda表达式是函数式编程的关键元素,它允许我们以更简洁、更易读的方式编写代码,特别是在处理集合和并发任务时。在这...
lambda 表达式和递归算法 lambda 表达式是一种匿名函数,可以用来定义小的、单次使用的函数。它通常用于数据处理、事件处理和其他需要临时函数的情况。lambda 表达式的基本语法是:`lambda arguments : expression`...
- `[=]`:按值捕获所有变量,意味着在lambda表达式内部创建这些变量的副本,但不能修改它们。 - `[&]`:按引用捕获所有变量,允许在lambda表达式内部读写这些变量。 - `[var]`或`[&var]`:按需捕获单个变量,可以...
Lambda表达式的语法形式为`(parameters) -> expression`,它允许我们直接编写函数体,就像在上述例子中那样,`a1 -> { return 1; }`等。Lambda表达式使得`calc()`方法的实现更加简洁,同时也减少了代码的冗余。 ...
Lambda表达式是Java 8引入的一种新的编程特性,它极大地简化了函数式编程,并使得代码更加简洁、易读。在Java中,Lambda表达式可以被理解为匿名函数,即没有名字的函数,它可以被当作方法参数传递,或者作为类的成员...
1. 定义:Lambda表达式是一种可以被赋值给变量、作为参数传递或作为返回值的函数。它的语法结构为`(参数列表) => 表达式`或`(参数列表) => { 函数体 }`。其中,`=>`称为箭头运算符,左边是参数列表,右边是函数体。 ...
Java 8 引入的 Lambda 表达式是 Java 编程语言的重大变革之一,它允许以更简洁的方式表示单方法接口的实现,极大地增强了 Java 语言的表达能力,尤其是结合了函数式接口、Stream API 和其他新特性后。接下来,我们将...
1. **Lambda表达式的基本语法** Lambda表达式的语法形式为`(parameters) -> expression`或`(parameters) -> { statements }`。其中,`parameters`是输入参数(如果无参数,可以省略括号),`->`是箭头符号,`...
例如,`lambda x: x + 1`创建了一个接受一个参数`x`并返回`x + 1`的函数。`lambda`函数通常用于需要一次性、短小的函数,比如作为参数传递给高阶函数,如`map()`、`filter()`或`reduce()`。 将字符串转换为`lambda`...
Lambda表达式在编译后的`.class`文件中,通常以`ClassName$Lambda$1`这样的形式命名,其中`ClassName`是包含Lambda表达式的类名,`Lambda$1`表示Lambda表达式的序列号。 在性能优化方面,虽然Lambda表达式提供了更...
1. **无参数Lambda**:如果Lambda表达式不接受任何参数,参数列表部分可以为空,如`() -> System.out.println("Hello, Lambda!")`。 2. **单个参数Lambda**:当参数类型可以被推断时,Lambda可以省略参数类型,如`...
Stream和Lambda表达式实践 在Java中,Stream API是Java 8中引入的一种新的数据处理方式,它可以对集合进行各种操作,如过滤、映射、聚合等。Lambda表达式是Java 8中引入的一种新的函数式编程方式,它可以将函数作为...