C# Lambda表达式

1.Lambda是什么

(1)形如:()=> { } 就是lambda表达式

(2)lambda表达式就是一个匿名方法,在底层会生成在一个"<>"类中,生成带有名称的方法。

2Lambda有什么

任何 Lambda 表达式都可以转换为委托类型。 Lambda 表达式可以转换的委托类型由其参数和返回值的类型定义。 如果 Lambda 表达式不返回值,则可以将其转换为 Action 委托类型之一;否则,可将其转换为 Func 委托类型之一。

3Lambda怎样用

public void Lambda() 

{

           //表达式lambda 只有一个表达式,表示这里面只允许有一行代码
            Func<int, int> func = x => x * 4;
            //接收表达式Lambda返回的值
            int result1 = func(5);                      //5*4=20

            //在表达式lambda中调用方法
            func = x => x * Add(3, 2);
            int result2 = func(5);                      //5*(3+2)=25

            //result 进行 表达式lambda 改进
            Func<int, int, int> func1 = (x,y) => { return x + y; };
            func = x => x * func1(3, 2);
            int result3 = func(5);                      //5*(3+2)=25
            

            //result 进行 表达式lambda添加逻辑运算
            Func<int,int,int> func2 = (x, y) => { if (x < y) return x + y; else return x;};
            //if (x < y)
            //    return x + y;
            //else
            //    return x;
            func = x => x * func2(3, 2);
            int result4 = func(5);                      //5*3=15

}

public int Add(int x, int y)
{

            return x + y;

}

4、Lambda的输入参数说明

(1)如果是没有参数,必须有这个空括号:

        Action line = () => Console.WriteLine();
(2)如果只有一个输入参数,则括号可有可无:

       Func<double, double> cube = x => x * x * x;

(3)两个或更多输入参数使用逗号加以分隔:

        Func<int, int, bool> testForEquality = (x, y) => x == y;

C#中的Lambda表达式是一个匿名函数,它是一种高效的类似于函数式编程的表达式。以下是对C#Lambda表达式的详细介绍: 1. **定义与基本形式** - Lambda表达式基于数学中的&lambda;演算得名,其语法使用Lambda运算符“=>”,该运算符读作“goes to”。 - 基本格式为:(参数列表) => 表达式或语句块。其中,参数列表是Lambda运算符左边的部分,可以包含0个、1个或多个输入参数;表达式或语句块是Lambda运算符右边的部分,用于定义函数的行为。 2. **参数说明** - 当没有输入参数时,必须使用空括号()来表示。 - 如果只有一个输入参数,则可以省略小括号,例如x => x * 2。 - 两个或更多输入参数使用逗号分隔,如(x, y) => x + y。 3. **表达式与语句块** - 如果Lambda表达式的主体只有一条语句且是表达式,可以省略大括号和`return`语句,例如x => x * 2。 - 如果主体包含多条语句或包含循环、方法调用、if语句等,则需要用大括号括起来,例如(int x) => { return x * 2; }。 4. **示例代码** - 以下是一个简单的示例,展示了如何使用Lambda表达式来计算两个数的和: ```csharp Func<int, int, int> add = (a, b) => a + b; int result = add(3, 5); Console.WriteLine(result); ``` - 在这个示例中,`add`是一个委托类型为`Func<int, int, int>`的Lambda表达式,它接受两个整数参数并返回它们的和。然后通过调用`add(3, 5)`来计算3和5的和,并将结果输出到控制台。 5. **应用场景** - Lambda表达式在LINQ查询中经常被用作标准查询运算符方法的参数,例如在`Where`方法中筛选集合中的元素。 - 还可以用于事件处理、异步编程等场景,使代码更加简洁和灵活。 6. **与其他匿名方法的区别** - Lambda表达式与匿名方法类似,但Lambda表达式更加简洁和易读。匿名方法需要使用`delegate`关键字声明委托类型,而Lambda表达式可以直接使用`=>`运算符来定义函数。 7. **闭包特性** - Lambda表达式可以访问外部变量,这称为闭包。但需要注意的是,如果外部变量的值发生变化,可能会影响Lambda表达式的结果。 8. **注意事项** - 在使用Lambda表达式时,编译器会根据表达式的参数和返回值的类型来推断委托类型。如果编译器无法推断出类型,则需要显式指定类型。 - Lambda表达式不能直接用于创建表达式树类型,如果需要在表达式树中使用Lambda表达式,需要使用特殊的表达式树方法。 综上所述,C#中的Lambda表达式是一种强大的工具,它提供了一种简洁、灵活的方式来定义匿名函数。熟练掌握Lambda表达式的使用可以提高代码的效率和可读性,但在使用过程中也需要注意一些细节和限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值