diff --git "a/\345\205\260\351\246\250\345\204\277/20220606-Lambda\350\241\250\350\276\276\345\274\217.md" "b/\345\205\260\351\246\250\345\204\277/20220606-Lambda\350\241\250\350\276\276\345\274\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..0e7e7ab213f219e9d93723be34134db2735d4063 --- /dev/null +++ "b/\345\205\260\351\246\250\345\204\277/20220606-Lambda\350\241\250\350\276\276\345\274\217.md" @@ -0,0 +1,58 @@ +## Lambda表达式 + +### 一、表达式lambda + +表达式`lambda`,表达式为其主体: +``` +(input-parameters) =>expression +``` + +### 二、语句lambda +语句`lambda`,语句块作为主体: +``` +(input-parameters) =>{ } +``` + +若要创建lambda表达式,需要在Lambda运算符走测指定输入参数(如果有),然后在另一侧输入表达式或语句块。 + +任何Lambda表达式都可以转换为`委托`类型。Lambda表达式可以转换的委托类型由其参数和返回值d的类型定义。如果lambda表达式不返回值,则可以将其转换为`Action`委托类型之一;否则,可将其转换为`Func`委托类型之一。例如,有2个参数且不返回值的Lambda表达式可转换为`Action`委托。有1个参数且不返回值的Lambda表达式可以转换为`Func`委托。 + +示例1:lambda表达式只有一个参数 +```cs + Func square =x=>x*x; + Console.WriteLine(square(2)); // 输出:4 + + Action greet =name=> + { + string greeting =$"Hello{name}"; + Console.WriteLine(greeting); + }; + greet("World") // 输出:Hello World +``` + +示例2:`表达式树类型` +```cs + System.Linq.Expressions.Expression> e =x=>x*x; + Console.WriteLine(e); // 输出:x =>(x*x) +``` + +示例3: +```cs + int[] numbers ={2,3,4,5}; + var squaredNumbers =numbers.Select(x=>x*x); + Console.WriteLine(string.Join(" ",squaredNumbers)); // 输出:4 9 16 25 +``` + +1、lambda表达式只有一个参数,则括号是可选的: +```cs +Func cube =x =>x*x; +``` +2、两个或更多输入参数使用逗号加以分割: +```cs +Func testForqulity =(x,y)=>x ==y; +``` +3、无法推断输入参数的类型,可以显示指定类型: +```cs +Func isTooLong =(int x,string s)=>s.Length>x; +``` +输入类型必须全部为显示或全部为隐式;否则生成CS0748编译器错误。 \ No newline at end of file diff --git "a/\345\205\260\351\246\250\345\204\277/img/lambda01.png" "b/\345\205\260\351\246\250\345\204\277/img/lambda01.png" new file mode 100644 index 0000000000000000000000000000000000000000..54dd3e0a8d4c1036cd3e7bcd26ec144d27040dca Binary files /dev/null and "b/\345\205\260\351\246\250\345\204\277/img/lambda01.png" differ diff --git "a/\345\205\260\351\246\250\345\204\277/img/lambda02.png" "b/\345\205\260\351\246\250\345\204\277/img/lambda02.png" new file mode 100644 index 0000000000000000000000000000000000000000..c63e5a912d6789b38261348846397000b717d231 Binary files /dev/null and "b/\345\205\260\351\246\250\345\204\277/img/lambda02.png" differ diff --git "a/\345\205\260\351\246\250\345\204\277/img/lambda03.png" "b/\345\205\260\351\246\250\345\204\277/img/lambda03.png" new file mode 100644 index 0000000000000000000000000000000000000000..d1192c184dce688d915b8d60f300c24bd435c9a5 Binary files /dev/null and "b/\345\205\260\351\246\250\345\204\277/img/lambda03.png" differ