• 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

写在前面

元旦三天在家闲着无事,就看了看Linq的相关内容,也准备系统的学习一下,作为学习Linq的前奏,还是先得说说Lambda与匿名方法的知识点。也算是对知识点的查漏补缺吧,也许你会说这没啥大不了的,项目中都在用,但是有些知识,你回头在查看的时候,总会有那么点不一样的收获,这点我是感同身受的,我看书有个习惯,一本书,我能看个三四遍,每次总会有收获。当然,你可以说,当时肯定没认真看,不是那样子的,我认为最直接的原因在于,当时你看是看,没有在真正的项目中遇到过,所以你心里对它的理解并不深,如果在有那么点项目经验了,在去翻看书中的理论知识,心里总会有那种豁然开朗的感觉。信不信由你,反正我是信了!

匿名方法

匿名方法顾名思义,是没有名字的方法,但是仍有方法体,仍能干活。在很多地方可能你都见过它,比如js中,用的最多!

看看Msdn给的说法:

在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法。 C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式。 不过,本主题中有关匿名方法的信息同样也适用于 Lambda 表达式。 有一种情况下,匿名方法提供了 Lambda 表达式中所没有的功能。 您可使用匿名方法来忽略参数列表。 这意味着匿名方法可转换为具有各种签名的委托。 这对于 Lambda 表达式来说是不可能的。


namespace Wolfy.LinqDemo
{
    /// <summary>
    /// 创建一个委托Del
    /// </summary>
    /// <param name="x">参数</param>
    public delegate void Del(int x);
    class Program
    {
        static void Main(string[] args)
        {
            //使用匿名方法创建一个委托对象d
            Del d = delegate(int x)
            {
                Console.WriteLine(x);
            };
        }
    }
}
</div>

通过使用匿名方法,由于您不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。

例如,线程类即可创建一个线程并且包含该线程执行的代码。

      Thread thread = new Thread(
       delegate()
       {
           //方法体
           Console.WriteLine("Hello world");
       });
</div>

可以更直白的这样理解,如果该方法就使用那么一次,那么就可以使用匿名方法。

Lambda

定义

Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。

若要创建 Lambda 表达式,需要在 Lambda 运算符 => 左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块。
/// <summary>
    /// 创建一个委托Del
    /// </summary>
    /// <param name="x">参数</param>
    public delegate void Del(int x);
    class Program
    {
        static void Main(string[] args)
        {
            Del del = x => Console.WriteLine(x * x);
            del(2);//4
            Console.Read();
        }
    }
</div>

若要创建表达式目录树,可以这样:

/// <summary>
    /// 创建一个委托Del
    /// </summary>
    /// <param name="x">参数</param>
    public delegate void Del(int x);
    class Program
    {
        static void Main(string[] args)
        {
            Del del = x => Console.WriteLine(x * x);
            del(2);//4
            System.Linq.Expressions.Expression<Del> expression = x => Console.WriteLine(x);
            Console.Read();
        }
    }
</div>

上面的例子创建了一个表达式目录树对象expression,由于Del委托是没有返回值的,这里是将其直接输出。

表达式Lambda

表达式位于 => 运算符右侧的 lambda 表达式称为“表达式 lambda”。表达式 lambda 会返回表达式的结果,并采用以下基本形式:
(input parameters) => expression
</div>

  注意:仅当 lambda 只有一个输入参数时,括号才是可选的;否则括号是必需的。 括号内的两个或更多输入参数使用逗号加以分隔:

(x, y) => x == y
//有时,编译器难以或无法推断输入类型。 如果出现这种情况,你可以按以下示例中所示方式显式指定类型
(int x, string s) => s.Length > x
//使用空括号指定零个输入参数
() => SomeMethod()
</div>

语句Lambda

语句 lambda 与表达式 lambda 表达式类似,只是语句括在大括号中
(input parameters) => {statement;}
</div>
statement(语句Lambda)可以包含任意数量的语句,但通常不会多于两个或三个。

一个例子

namespace Wolfy.LinqDemo
{
    /// <summary>
  &

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

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

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

相关文章

  • 2017-05-28C#基于TimeSpan实现倒计时效果的方法
  • 2017-05-28简单谈谈C#中深拷贝、浅拷贝
  • 2017-05-28C#实现获取磁盘空间大小的方法
  • 2017-05-28C#画笔Pen保存和恢复图形对象的设置方法
  • 2017-05-28探讨如何用委托处理排序
  • 2017-05-28C#封装的常用文件操作类实例
  • 2017-05-28C#生成唯一值的方法汇总
  • 2017-05-28浅谈C#下winform和JS的互相调用和传参(webbrowser)
  • 2017-05-28浅析泛型类接口定义
  • 2017-05-28Datagridview使用技巧(9)Datagridview的右键菜单

文章分类

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

最近更新的内容

    • C#、.Net中把字符串(String)格式转换为DateTime类型的三种方法
    • C#实现listview Group收缩扩展的方法
    • C#中循环语句:while、for、foreach的使用
    • c#多线程网络聊天程序代码分享(服务器端和客户端)
    • C#清除WebBrowser中Cookie缓存的方法
    • winform分页控件 附源码下载
    • C#中累加器函数Aggregate用法实例
    • C#实现查杀本地与远程进程的方法
    • C#开发Windows服务实例之实现禁止QQ运行
    • C#转换日期类型实例

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

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