lambda
是一个匿名函数
,是一种高效的类似于函数式编程的表达式
可以搭配委托实现代码的新方式
示例
using System;
namespace lambda
{
internal class Program
{
static void Main(string[] args)
{
// 委托变量不仅可以指向普通方法,也可以指向匿名方法。
// 无参 Action
Action f1 = delegate ()
{
Console.WriteLine("demo 1 \n ");
};
f1();
// 带参
Action<int, int> f2 = delegate (int i,int j)
{
Console.WriteLine($"demo 2 {i} {j} \n ");
};
f2(1,2);
// 带参和返回值 func
Func<int, int, string> f3 = delegate (int i,int j)
{
return "demo 3 "+(i+j).ToString()+"\n";
};
Console.WriteLine(f3(1,2));
// lambda
//
// 省略delete 和数据类型,换成 => (goes to)
//
// 因为编译能根据稳妥类型推断参数类型。
// => 引出方法体
Func<int, int, string> f4 = (i,j)=>
{
return "demo 4 " + (i + j).ToString() + "\n";
};
Console.WriteLine(f4(1, 2));
// 如果委托没有返回值,且方法体只有一行 没有返回值用Action!
// {}也可以省略
Action<int, int> f5 = (i, j) => Console.WriteLine("demo 5 " + (i + j).ToString() + "\n") ;
f5(1,2);
// 如果有返回值且只有一行,可以省略{}和return
Func<int, int, string> f6 = (i, j) =>
"demo 6 " + (i + j).ToString() + "\n";
Console.WriteLine(f6(1, 2));
// 如果只有一个参数 ()可省略
Action<int> f7 = (i) => Console.WriteLine("demo 7 " + (i).ToString() + "\n");
f7(1);
}
}
}