为了账号安全,请及时绑定邮箱和手机立即绑定

请问在C#中使用匿名函数做函数参数,求教语法含义?

请问在C#中使用匿名函数做函数参数,求教语法含义?

C#
慕容708150 2019-09-13 15:10:16
C#中使用匿名函数做函数参数,求教语法含义
查看完整描述

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));





查看完整回答
反对 回复 2019-09-22
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

C#编译器在后台做了很多东西,匿名函数其实从简单的介绍的话,是没有名字的函数,更严格一些,匿名函数是闭包的一个实现,也就是C#通过兰步达表达式(匿名函数)实现了闭包,通过闭包,可以改变局部变量的声明周期,因此闭包有很多很特殊和奇妙的引用。

查看完整回答
反对 回复 2019-09-22
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

你的btn不是孤立的,它是作为一个窗体里的对象存在的
那么你是不是可以通过btn.Form之类的方法获取到这个窗体,从而获取到窗体里的相应属性之类
如果不是公共的,可以通过反射来实现
RoutedEventHandler事件的参数是已经固定了的,就是Object sender, RoutedEventArgs e
所以你无法增加你需要的参数,
不过这个sender,就是触发事件的对象,也就是那个btn,你可以变通一下,给那个btn的某些属性赋值成你希望传递的参数,比如btn.Text = 参数
然后在:btn_Click方法里,把sender转换为btn对象,并获取text属性


查看完整回答
反对 回复 2019-09-22
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

直接return一个变量就可以了,变量的类型编译器会推断出来。但假如等号左边是一个事件,那么返回值类型就要和事件的返回值类型相同了

查看完整回答
反对 回复 2019-09-22
  • 5 回答
  • 0 关注
  • 452 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信