C#中如何使用Lambda表达式

发布时间:2021-07-19 15:41:35 作者:Leah
来源:亿速云 阅读:146

本篇文章为大家展示了C#中如何使用Lambda表达式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

C# Lambda表达式

我们从“所有字符串查找包含YJingLee子字符串”说起。在C# 2.0中,匿名方法允许我们以内联的方式来实现委托实例,它提供强大的函数式编程语言,但是标记显得相当的冗长和带有强制性。我们使用C# 2.0 中的匿名方法查找,代码如下:

var inString = list.FindAll(delegate(string s)  { return s.Indexof("YJingLee") >= 0; });

现在可以使用C# 3.0带来的Lambda表达式允许我们使用一种更接近人的思维、更自然的方式来实现类似于匿名方法同样的效果,看下面的代码多么简洁:

var inString = list.FindAll(s => s.Indexof("YJingLee") >= 0);

Lambda表达式格式:(参数列表)=>表达式或语句块
具体意义:定义Lambda接受参数列表,运行表达式或语句块返回表达式或语句块的值传给这个参数列表。

C# ambda表达式参数类型可以是隐式类型或显式类型。在显式列表中,每个参数的类型是显式指定的,在隐式列表中,参数的类型由Lambda表达式出现的语境自动推断类型。
Lambda表达式的参数列表可以有一个或多个参数,或者无参数。在有单一的隐型参数的lambda表达式中,圆括号可以从参数列表中省略。
例如:

(x, y) => x * y;//多参数,隐式类型=>表达式  x => x * 10;//单参数,隐式类型=>表达式  x => { return x * 10; }; //单参数,隐式类型=>语句块  (int x) => x * 10;//单参数,显式类型=>表达式  (int x) => { return x * 10; };//单参数,显式类型=>语句块  () => Console.WriteLine(); //无参数

下面看这个例子:
在前面的帖子中,我们写了一个User类及增加了2个人,接下来,我们使用由LINQ提供的新的Where和Average方法来返回集合中的人的一个子集,以及计算这个集合中的人的平均年龄:

List<User> user = new List<User>{  new User{Id=1,Name="YJingLee",Age=22},  new User{Id=2,Name="XieQing",Age=25},  };  //获取特定人时所用的过滤条件,p参数属于User类型  var results = user.Where(p => p.Name == "YJingLee").ToList();  //用User对象的Age值计算平均年龄  var average = user.Average(p => p.Age);

效果图如下:

C#中如何使用Lambda表达式

对这个Lambda表达式做个简要分析:

var resultsdelegate = user.Where(delegate(User p)  {  return p.Name == "YJingLee";// 返回一个布尔值  });  var averagedelegate = user.Average(delegate(User p)  {  return p.Age;  });

C#中如何使用Lambda表达式

C# Lambda表达式L可以被转换为委托类型D,需要满足以下条件:
L的参数类型要与D的参数个数相等,类型相同,返回类型相同,无论是表达式,还是语句块。注意隐式类型要参与类型辨析。

上述内容就是C#中如何使用Lambda表达式,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. C#中Lambda表达式的示例分析
  2. C# Lambda表达式

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

lambda

上一篇:C#中.Net FrameWork的作用是什么

下一篇:python中的EasyOCR库是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》