举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > java lambda表达式 C# Lambda表达式

java lambda表达式 C# Lambda表达式

2023-02-28 10:18 C#教程

java lambda表达式 C# Lambda表达式

java lambda表达式

Java lambda表达式是Java 8中引入的一种新的语法,它可以让你更加简洁地表达函数式编程。它可以帮助你更快地实现复杂的逻辑,并且可以使代码更加易读。

Lambda表达式有两个部分:参数列表和函数体。参数列表是一个由逗号分隔的参数列表,它由一个或多个形式参数组成。函数体是一个单独的语句或代码块,它包含要执行的操作。

Lambda表达式有很多优势,其中最重要的是它能够帮助你更快地实现复杂的逻辑。例如,如果你想要对一个集合中的所有元素进行过滤,你可以使用lambda表达式来快速实现这一目标。此外,lambda表达式也能帮助你避免写大量重复性代码,因此能够使代码更加易读和易于理解。

list.stream()
    .filter(x -> x.getAge() > 18)
    .forEach(x -> System.out.println(x));

C# Lambda表达式

C# Lambda表达式

lambda表达式是一个未命名的方法,代替一个委托实例。

给定以下委托类型:

delegate int Converter (int i);

我们可以如下分配和调用lambda表达式x => x * x:

Converter sqr = x => x * x;
Console.WriteLine (sqr(3)); // 9

lambda表达式具有以下形式:

(parameters) => expression
We can omit the parentheses if and only if there is exactly one
parameter of an inferable type.

在我们的示例中,有一个参数, x ,表达式为 x * x :

x => x * x;

lambda表达式的每个参数都对应一个委托参数,表达式的类型对应于委托的返回类型。

在上面的代码中, x 对应于参数 i ,表达式 x * x 对应于返回类型 int ,因此它与 Converter 委托兼容,如下所示:

delegate int Converter (int i);

lambda表达式的代码可以是语句块而不是表达式。

x => { return x * x; };

Lambda表达式最常用于Func和Action委托。

我们可以重写上面的代码如下:

Func<int,int> sqr = x => x * x;

下面是一个接受两个参数的表达式示例:

Func<string,string,int> totalLength = (s1, s2) => s1.Length + s2.Length;
int total = totalLength ("a", "the"); 

捕获外部变量

lambda表达式可以引用定义它的方法的局部变量和参数。

例如:

static void Main(){
   int factor = 2;
   Func<int, int> multiplier = n => n * factor;
   Console.WriteLine (multiplier (3)); // 6
}

由lambda表达式引用的外部变量称为捕获变量。

捕获变量的lambda表达式称为闭包。

捕获的变量在实际调用委托时求值,而不是在捕获变量时求值:

int factor = 2;
Func<int, int> multiplier = n => n * factor;
factor = 3;
Console.WriteLine (multiplier (3)); // 9

Lambda表达式可以更新捕获的变量:

int outerVariable = 0;
Func<int> myLambda = () => outerVariable++;
Console.WriteLine (myLambda()); // 0
Console.WriteLine (myLambda()); // 1
Console.WriteLine (outerVariable); // 2

匿名方法

要编写匿名方法,请包括delegate关键字,随后可以包含参数声明,然后是方法体。

例如,给这个代理:

delegate int Converter (int i);

我们可以写和调用匿名方法如下:

Converter sqr = delegate (int x) {return x * x;};
Console.WriteLine (sqr(3)); // 9

第一行在语义上等同于以下lambda表达式:

Converter sqr = (int x) => {return x * x;};

或者简单为:

Converter sqr = x => x * x;

匿名方法以与lambda表达式相同的方式捕获外部变量。

阅读全文
以上是编程学为你收集整理的java lambda表达式 C# Lambda表达式全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部