• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#基础之Lambda表达式用法实例教程

C#基础之Lambda表达式用法实例教程

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#lambda表达式,c#中lambda表达式,c#lambda表达式 嵌套,c#lambda,c#中lambda等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文以实例形式介绍了C#中Lambda表达式的用法,分享给大家供大家参考之用。具体如下:

从委托的角度来看,Lambda表达式与匿名方法没有区别。在前面C#基础之匿名方法一文中,我们使用了匿名方法来调用List<T>的FindAll方法。从C# 3.0开始,在使用匿名方法的地方,完全可以用Lambda表达式来代替。Lambda表达式的定义方式为:“([参数列表]) => 表达式”。运算符“=>”是一种与赋值运算“=”具有相同优先级的右结合运算符,在英语里读作:“goes to”。

现在回过头来看我们的例子。下面的代码与之前C#基础之匿名方法一文中的代码具有相同的效果:

class Program 
{ 
 static void Main(string[] args) 
 { 
 List<string> names = new List<string>(); 
 names.Add("Sunny Chen"); 
 names.Add("Kitty Wang"); 
 names.Add("Sunny Crystal"); 
 
 List<string> found = names.FindAll 
  ( 
  // Lambda Expression Implementation 
  name => name.StartsWith( 
  "sunny", 
  StringComparison.OrdinalIgnoreCase) 
  ); 
 
 if (found != null) 
 { 
  foreach (string str in found) 
  Console.WriteLine(str); 
 } 
 } 
}

</div>

上面的Lambda Expression Implementation在效果上与匿名方法没有任何区别,“=>”左边的name定义了参数(当参数个数为1的时候,圆括号可以省略),“=>”右边定义执行体。由于C# 3.0编译器具有Type Inference的能力,参数类型与返回值都将由编译器通过上下文判定,因此与匿名方法不同,Lambda表达式的参数可以不给定参数类型。当所表示的匿名方法没有任何参数时,Lambda表达式也同样可以使用,只需在“=>”左边用一对圆括号表示即可。即:

() => Console.WriteLine("Hello!"); 
</div>

事实上,“Lambda表达式”这一词比较笼统,事实上“=>”运算符既可以表示Lambda表达式,也可以表示Lambda语句。Lambda语句由代码块组成,形式上很像匿名方法。请看下面的例子:

class Program 
{ 
 static void Main(string[] args) 
 { 
 // Lambda 表达式 
 Func<int, bool> dele1 = n => n > 10; 
 // Lambda 语句 
 Func<int, bool> dele2 = (int n) => { return n > 10; }; 
 Console.WriteLine(dele1(16)); 
 Console.WriteLine(dele1(8)); 
 }
}
</div>

两种定义方法同样可以正确地输出结果。请注意,当我们希望构建表达式树的时候,情况却完全不同了:

// ok
Expression<Func<int, bool>> expr1 = n => n > 10;
// error: cannot converted to an expression tree
Expression<Func<int, bool>> expr2 = (int n) => { return n > 10; };

</div>

由此可见,在构建表达式树的时候,不能用Lambda语句(带有代码语句的Lambda表达式),而应该使用Lambda表达式。从这里就可以看出匿名方法与Lambda表达式的区别了。

相信本文所述对大家C#程序设计的学习有一定的借鉴价值。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#中方法的直接调用、反射调用与Lambda表达式调用对比
  • 理解C#中的Lambda表达式
  • 初步认识C#中的Lambda表达式和匿名方法
  • C#特性之匿名方法和Lambda表达式
  • C#中使用Lambda表达式自定义比较器实现两个列表合并实例
  • C#基础之Lambda表达式用法实例教程
  • C#3.0中Lambda表达式详解
  • C# 中如何利用lambda实现委托事件的挂接
  • C#用Lambda和委托实现模板方法

相关文章

  • 2017-05-28采用C#实现软件自动更新的方法
  • 2017-05-28C#实现在图像中绘制文字图形的方法
  • 2017-05-28c#通过unicode编码判断字符是否为中文示例分享
  • 2017-05-28c#进度条 progressBar 使用方法的小例子
  • 2017-05-28C#中日期时间的简单操作
  • 2017-05-28C#实现的Windows剪贴板监视器功能实例【附demo源码下载】
  • 2017-05-28C# 获取程序集版本、文件版本
  • 2017-05-28C#实现为一张大尺寸图片创建缩略图的方法
  • 2017-05-28Windows服务编写(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用)
  • 2017-05-28c#判断正确的ip地址格式示例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#版的 Escape() 和 Unescape() 函数分享
    • C# 中文简体转繁体实现代码
    • C#自适应合并文件的方法
    • 使用C#在注册表中保存信息的例子
    • C#把整个文件内容读入字符串变量的方法
    • C#中sizeof的用法实例分析
    • C#几种截取字符串的方法小结
    • C# Hook钩子实例代码 截取键盘输入
    • c#编写webservice服务引用实例分享
    • 解决C# 截取当前程序窗口指定位置截图的实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有