.net Lambda表达式
最近看架构师用Lambda表达式很舒服,很简洁,于是抽空看了下,其实很简单的
目录:
1.匿名方法
2.匿名方法与Lambda区别
3.使用Lambda表达式
开始学习啦。。。。。。。
一,匿名方法
有些方法很少被委托以外的任何程序调用,从生产效率来讲,手工定义一个这样的方法有点繁琐,不是很受欢迎,为了解决这个
情况。现在可以在事件注册时直接将一个委托与一段代码相关联,这种代码的正式名称为匿名方法。
示例:
List<int> list = new List<int>();
list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });
List<int> evenNumber = list.FindAll(delegate(int i)
{
return (i % 2) == 0;
});
二,匿名方法与Lambda区别
C#支持内联处理事件,通过直接把一段代码语句赋给事件(使用匿名方法),而不是构建被低层委托调用的独立方法,Lambda表
达式只是用更简洁的方式来写匿名方法,彻底简化了对委托类型的使用。
三,使用Lambda表达式
由于该表达式过于简单,所以直接奉上示例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
namespace LambdaTest { class Program { static void Main(string[] args) { //Lambda表达式测试 TraditionalDelegateSyntax(); Console.Read(); } static void TraditionalDelegateSyntax() { List<int> list = new List<int>(); list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 }); //方法一,定义相同类型的委托实例,作为传递参数 //Predicate<int> anonymousFun = new Predicate<int>(IsEvenNumber); //方法二,Predicate<int>委托接受一个同样签名的函数 //List<int> evenNumber = list.FindAll(IsEvenNumber); //方法三,匿名函数的方式 支持C#内联处理事件 //List<int> evenNumber = list.FindAll(delegate(int i) //{ // return (i % 2) == 0; //}); //方法四,Lambda表达式 比匿名函数更简洁 //lamdba表达式的语法 (参数1,参数2,...)=>{处理语句} 如果没有参数表达式则为:()=>{处理语句} List<int> evenNumber = list.FindAll(i => (i % 2) == 0); //方法2辅助 //Predicate<int> anonymousFun=IsEvenNumber; //List<int> evenNumber = list.FindAll(anonymousFun); foreach (var number in evenNumber) { Console.WriteLine(number); } } static bool IsEvenNumber(int i) { return (i%2)==0; } } }