Lambda表达式

1.什么是Lambda表达式 

      “Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。 所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块

2.Lambda表达式格式:
        (参数列表)=> 表达式或语句块,左边参数列表可以有多个参数,一个参数,或者无参数;参数类型可以隐式或者显式。例如:
                (x, y) => x * y                              //多参数,隐式类型=> 表达式
                x => x * 10                                  //单参数,隐式类型=>表达式
                x => { return x * 10; }                   //单参数,隐式类型=>语句块
                (int x) => x * 10                            //单参数,显式类型=>表达式
                (int x) => { return x * 10; }            //单参数,显式类型=>语句块
                () => Console.WriteLine()                //无参数

 由上面这些语句我们可以得出Lambda表达式的一些要点:
        1.参数类型可以忽略,因为可以根据使用的上下文进行推断而得到;     

 

        2.表达式的主体可以是表达式((x, y) => x * y  ),也可以是语句块(x => { return x * 10; })
        3.Lambda表达式传入的实参将参与类型推断,以及方法重载辨析。
        4.Lambda表达式表达式和表达式体可以被转换为表达式树

 3.Lambda表达式与委托类型

public delegate int TestIntDelegate(int g);
    public class TestClass
    {
        
        static void Main()
        {//TestIntDelegate ti = new TestIntDelegate(mydelegate);
           Console.WriteLine(Test(mydelegate));
Console.Write(Test(y
=> y * y)); Console.ReadLine(); } public static int Test(TestIntDelegate ti) { return ti(10); } //必须写成静态 public static int mydelegate(int i) { return i * i; } }

        Lambda表达式可以被转成委托类型,但必须满足以下几点: 
        1.两者参数个数相同 
        2.参数类型相同,注意隐式类型要参与类型辨析 
        3.委托的返回类型要与Lambda的相同,不论是表达式还是语句块1

 

原文地址:https://www.cnblogs.com/ashleyboy/p/3431391.html