您的位置:首页 > 编程语言 > C#

C# 匿名方法和Lambda表达式

2017-09-12 13:25 190 查看
匿名方法
static int Test1(int arg1,int arg2)
{
return arg1 + arg2;
}
static void Main(string[] args)
{
// Func<int, int, int> plus = Test1;//这是正常使用委托的方式
Func<int, int, int> plus = delegate (int arg1, int arg2)//转换成匿
名方法形式
{
return arg1 + arg2;
};
}

匿名方法即没有名字的方法,关键字是delegate
匿名方法只能将方法赋值给委托,通过委托调用该方法
匿名方法本质上是一个方法,只是没有名字,任何使用委托变量的地方都可以使用匿名方法
赋值
Lambda表达式
Lambda表达式是匿名方法的简写形式,用来代替匿名方法
static void Main(string[] args)
{
// Func<int, int, int> plus = Test1;//这是正常使用委托的方式
Func<int, int, int> plus = ( arg1,arg2)=>//换成Lambda表达式形式
{
return arg1 + arg2;
};
Console.WriteLine(plus(12, 45));
Console.ReadKey();
}

Lambda表达式是不需要声明类型的



Lambda表达式表示的参数如果只有一个,可以不加小括号,当函数体的语句只有一句时,
可以不加大括号,也可以不加Return
static void Main(string[] args)
{
Func<int, int> test2 = a => a+1;//简写形式
Func<int, int> test3 = (a) =>//普通形式
{
return a + 1;
};
Console.WriteLine(test2(22));
Console.ReadKey();
}

1、如果Lambda表达式只有一条语句,在方法体中就不需要大括号和return语句,编译器
会自动添加return语句
2、如果Lambda表达式的实现代码中需要多条语句,就必须添加大括号和return语句

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: