5 回答
TA贡献1893条经验 获得超10个赞
Lambda表达式是C#3.0的新内容,如果您之前学习的C#2.0,不认识也就不奇怪了。
给您举个例子。
例如,我定义一个委托:
delegate int Method(int a, int b);
再定义一个方法:
int Add(int a, int b)
{
return a + b;
}
我可能需要这样通过委托调用方法:
Method m += Add;
Console.WriteLine(m(2, 3));
====================================================
但如果用 Lambda 表达式:
Method m += (a ,b) => a + b;
Console.WriteLine(m(2, 3));
可以省去方法的定义。
实际上, Lambda 表达式只是简化了匿名方法的语法而已。
附 C# 2.0 的匿名方法语法:
Method m += delegate(int a, int b) { return a + b; };
Console.WriteLine(m(2, 3));
TA贡献1798条经验 获得超7个赞
C#编译器在后台做了很多东西,匿名函数其实从简单的介绍的话,是没有名字的函数,更严格一些,匿名函数是闭包的一个实现,也就是C#通过兰步达表达式(匿名函数)实现了闭包,通过闭包,可以改变局部变量的声明周期,因此闭包有很多很特殊和奇妙的引用。
TA贡献1812条经验 获得超5个赞
你的btn不是孤立的,它是作为一个窗体里的对象存在的
那么你是不是可以通过btn.Form之类的方法获取到这个窗体,从而获取到窗体里的相应属性之类
如果不是公共的,可以通过反射来实现
RoutedEventHandler事件的参数是已经固定了的,就是Object sender, RoutedEventArgs e
所以你无法增加你需要的参数,
不过这个sender,就是触发事件的对象,也就是那个btn,你可以变通一下,给那个btn的某些属性赋值成你希望传递的参数,比如btn.Text = 参数
然后在:btn_Click方法里,把sender转换为btn对象,并获取text属性
- 5 回答
- 0 关注
- 472 浏览
添加回答
举报