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

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


慕容708150
浏览 473回答 5
5回答

白猪掌柜的

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

元芳怎么了

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

ABOUTYOU

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

神不在的星期二

直接return一个变量就可以了,变量的类型编译器会推断出来。但假如等号左边是一个事件,那么返回值类型就要和事件的返回值类型相同了
打开App,查看更多内容
随时随地看视频慕课网APP