一句话说明白Lambda表达式的基本知识

简介: Lambda表达式就是匿名方法! 1.匿名方法         要谈Lambda表达式,首先要理解匿名方法。使用委托我们要在别处写一个方法,然后再绑定到委托上使用。而使用匿名委托可以不用再在别处创建方法,直接将代码段作为传递给委托:         (1)不使用匿名方法: using System; namespace 委托demo控制台 { cla

Lambda表达式就是匿名方法!

1.匿名方法

        要谈Lambda表达式,首先要理解匿名方法。使用委托我们要在别处写一个方法,然后再绑定到委托上使用。而使用匿名委托可以不用再在别处创建方法,直接将代码段作为传递给委托:

        (1)不使用匿名方法:

using System;  
namespace 委托demo控制台  
{      
    class Program  
    {  
        public delegate void DoWork(string str);  
        static void Main(string[] args)  
        {  
            DoWork dowork = Work;  
            dowork("Hi,I'm Wangzhengkun!");  
        }  
        public static void Work(string str)  
        {  
            Console.WriteLine(str);  
            Console.ReadKey();  
        }  
    }  
}  
        (2)使用匿名方法:

using System;
namespace 委托demo控制台
{
    class Program
    {
        public delegate void DoWork(string str);
        static void Main(string[] args)
        {
            DoWork dowork = delegate (string str) 
            {
                Console.WriteLine(str);
                Console.ReadKey();
            };
            dowork("Hi,I'm Wangzhengkun!");
        }
    }
}  
实际执行的结果是一样的,使用匿名方法就不必再单独创建"Work"这个方法了,减少了代码量。

2.Lambda表达式

        从C#3.0开始Lambda表达式代替了匿名方法。首先看Lambda表达式使用的运算符“=>”,该运算符左边指定Lambda表达式的参数右边指定代码块。

使用Lambda表达式上面的例子就可以写成这样:

using System;
namespace 委托demo控制台
{
    class Program
    {
        public delegate void DoWork(string str);
        static void Main(string[] args)
        {
            DoWork dowork = str =>
            {
                Console.WriteLine(str);
                Console.ReadKey();
            };
            dowork("Hi,I'm Wangzhengkun!");
        }
    }
}

其中Lambda表达式就是这一部分:

str => { Console.WriteLine(str);  Console.ReadKey();  }  ;
 str是参数,右边大括号里的是代码段。

一个更简单的Lambda表达式:

str=>Console.WriteLine("Hi,I'm Wangzhengkun");

相比于匿名方法,Lambda表达式进一步缩减了代码量。

        以上都是单参数的Lambda表达式,还有多参数的:

public delegate void DoWork(string str1,string str2);
        static void Main(string[] args)
        {
            DoWork dowork = (str1,str2) =>
            {
                Console.WriteLine(str1+str2);
                Console.ReadKey();
            };
            dowork("Hi,", "I'm Wangzhengkun!");
        }
        总结一下: Lambda表达式就是匿名方法!

        关于Lambda表达式的基础就总结这么多,在我的另一篇博文“聊聊学习List<T>搜索与排序的心得”中讲到了Lambda表达式的一种实际用法。

更深入的用法放到LINQ里说吧。

目录
相关文章
|
6月前
|
设计模式 数据可视化 测试技术
实践中的面向对象的例子
【7月更文挑战第1天】本文介绍面向对象编程注重代码的可理解性、重用和维护。例如,设计一个显示时间、温度等的设备,用户无需关心内部工作,这就是封装;如果需要多个设备,可通过多态创建不同实例;而继承则允许共享通用功能,如所有时钟都继承自计时器基类。
147 0
实践中的面向对象的例子
|
3月前
|
搜索推荐
用通俗易懂的方式解释一下多态
【10月更文挑战第13天】多态,就像是编程世界里的一场神奇魔术,它让不同的对象在面对相同的操作时,能够展现出各自独特的表现。
28 2
|
7月前
|
消息中间件 Linux API
一篇文章讲明白LinuxKernel编程
一篇文章讲明白LinuxKernel编程
41 0
|
7月前
|
JSON 网络协议 Shell
一文搞懂:【Day29】Soket编程
一文搞懂:【Day29】Soket编程
38 0
|
8月前
|
存储 安全 Java
源码必备知识:泛型
源码必备知识:泛型
49 2
|
8月前
|
存储 编译器 C语言
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(中)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
36 0
|
8月前
|
Java C语言 C++
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(上)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
50 0
|
8月前
|
存储 编译器 程序员
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(下)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
29 0
|
存储 安全 Java
【面试题精讲】什么是泛型?有什么作用?
【面试题精讲】什么是泛型?有什么作用?
|
机器学习/深度学习 存储 缓存
一文带你搞懂C#泛型
泛型是.net 2.0中提供的新特性,是框架的一种升级,用于处理用一个事物来代替多种不同需求的情况。下面我们就一块来看一下具体的讲解吧。