• 3、Lambda表达式


    Lambda表达式

    Lambda表达式(lambda expression),是一种匿名函数,即没有函数名的函数。

    Lambda表达式不仅在C#中使用,在Java、Phtyon、C++ 中都有使用。

    在C#中,Lambda表达式的使用方式为Lambda运算符=>,该运算符读为“goes to"。语法如下: 

    形参列表=>函数体;【PS:函数体多于一条语句时可用大括号括起】

    使用方法如下:【PS:不管Lambda表达在委托、Linq等其它技术中怎么使用,都是为了方便优化程序使代码更优美,但其基本的语法和基本用法是不会改变的】

    1)    其中“参数列”中可包含任意个参数(与委托对应),如果参数列中有0个或1个以上参数,则必须使用括号括住参数列,如下:
    () => Console.Write("0个参数")
    I => Console.Write("1个参数时参数列中可省略括号,值为:{0}",i)
    (x,y) => Console.Write("包含2个参数,值为:{0}*{1}",x,y)
    2)     而“语句或语句块”中如果只有一条语句,则可以不用大括号括住否则必须使用,如下:
    I => Console.Write("只有一条语句")
    I => { Console.Write("使用大括号的表达式"); }
    //两条语句时必须要大括号
    I => { i++;Console.Write("两条语句的情况"); }
    3)    如果“语句或语句块”有返回值时,如果只有一条语句则可以不输写“return”语句,编译器会自动处理,否则必须加上,如下示例:
    “Lambda表达式”是委托的实现方法,所以必须遵循以下规则:
    A)“Lambda表达式”的参数数量必须和“委托”的参数数量相同;
    B)如果“委托”的参数中包括有ref或out修饰符,则“Lambda表达式”的参数列中也必须包括有修饰符;
    例子:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class    Test
    {
        delegateintAddHandler(intx,inty);
        staticvoidPrint(AddHandleradd)
    {
        Console.Write(add(1,3));
    }
     
    static void  Main()
    {
        Print((x,y)=>x+y);
        Print((x,y)=>{intv=x*10;returny+v;});
        Console.Read();
    }
    }
    注: 如果包括有修饰符,则“Lambda表达式”中的参数列中也必须加上参数的类型
    C)如果“委托”有返回类型,则“Lambda表达式”的“语句或语句块”中也必须返回相同类型的数据;
    D)如果“委托”有几种数据类型格式而在“Lambda表达式”中“编译器”无法推断具体数据类型时,则必须手动明确数据类型。
     
     
  • 相关阅读:
    C++中const变量使用注意
    const对象调用static成员函数
    Error in startup script: value for " " missing
    check tcl version
    socket
    grid pack
    mouse bind
    gesture
    pixel
    open
  • 原文地址:https://www.cnblogs.com/sandyliu1999/p/4968665.html
Copyright © 2020-2023  润新知