码迷,mamicode.com
首页 > 其他好文 > 详细

委托 lambda表达式浅显理解

时间:2016-12-17 22:46:36      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:编译器   event   public   turn   var   tar   res   box   result   

方法不能跟变量一样当参数传递,怎么办,C#定义了委托,就可以把方法当变量一样传递了,为了简单,匿名方法传递,省得再声明方法了;再简单,lambda表达式传递,比匿名方法更直观。

public delegate int delegateArithmetic(int a, int b);

//委托作为参数,方法传递给委托
public int result(int x,int y,delegateArithmetic delAri)
{
return delAri(x, y);
}

public int Sum(int m,int n)
{
return m + n;
}

private void button2_Click(object sender, EventArgs e)
{
textBox2.Text = "";
//委托作为参数,方法传递给委托
var r1 = result(8, 5, Sum);
textBox2.Text = textBox2.Text+"把方法传递给delegate,两数相加结果:" + r1.ToString()+"\r\n";

//委托作为参数,匿名方法传递给委托
var r2 = result(8, 5, delegate (int a, int b) { return a - b; });
textBox2.Text = textBox2.Text + "匿名方法传递给delegate,两数相减结果:" + r2.ToString() + "\r\n";

//委托作为参数,lambda表达式传递给委托
var r3 = result(8, 5, (x, y) => { return x * y; });
textBox2.Text = textBox2.Text + "lambda表达式传递给delegate,两数相乘结果:" + r3.ToString() + "\r\n";

//委托作为参数,简易lambda表达式传递给委托
var r4 = result(8, 5, (x, y) => x * y);
textBox2.Text = textBox2.Text + "简易lambda表达式传递给delegate,两数相乘结果:" + r4.ToString() + "\r\n";
}

 

lambda表达式就是简化了的匿名方法,C#编译器编译的时候就把lambda表达式编译成匿名方法。

委托 lambda表达式浅显理解

标签:编译器   event   public   turn   var   tar   res   box   result   

原文地址:http://www.cnblogs.com/JordanHmj/p/6192979.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!