首页 > 分享 > lamda表达式 Dispatcher.BeginInvoke(() =>

lamda表达式 Dispatcher.BeginInvoke(() =>

lamda表达式

“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。

格式:( 形参列表 ) => { 函数体 }

所有 Lamda 表达式都使用 Lamda 运算符 =>,该运算符读为“goes to”。该 Lamda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表达式分配给委托类型

委托这些概念是.NET高级编程中的,当一个程序员经过一个阶段的学习之后,想要有一个提高,这时候学习这些概念就是必须的了,所以在讲Lamda表达式时,把这委托,匿名委托(匿名方法),Lamda表达式这几个概念整理了一下。

      网上这方面的例子很多,但是对于起步阶段的人来说,这些例子显的晦涩了,所以我举得例子中,为了更清楚的说明这三者的关系,将淡化其内部实现的功能。

     首先讲委托,在.NET中,委托这个概念有点类似于C/C++中的函数指针,但与指针不同的是,委托是一种安全的类型,那么我们就以实现两个数的差值为例,首先声明返回值为int的一个成员方法:  

 public int CompareTwoValue(int a, int b)    {             int c=a-b;             return c;     }

 接着声明一个委托: 

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

   然后,我们可以通过这个委托调用这个上面的成员方法,

 public int Show()   {             deleMethod d1 = new deleMethod(CompareTwoValue);             return d1(5,10);    }

      那么,关于委托的概念,我就讲到这里,接着说明一下,匿名委托,其实也称作匿名方法,其实,这只是一种语法形式上的变化,因为编译的时候,还是要进行类型匹配的,那么对于上面的Show方法,我可以使用匿名委托的方式来表达 

 public int Show1()    {        deleMethod d2 = delegate(int a, int b)          {                 int c=a-b;                 return c;             };               return     d2(5,10);    }

可以看出,语法形式上简便了,所以我个人觉得匿名委托在C#2.0中并没有实质性的用处,因为到3.0时,涉及到Lamda表达式时,才真正的有用处,那么上面的方法,如果用Lamda表达式表述如下:

 public int Show2()    {        Func<int, int, int> f = ( a,b) =>             {                 return a - b;             };                       return   f(5,10);     }

初次接触Lamda表达式时感觉很难懂,但是一旦理解了之后,我就很喜欢这种表达方式,其实,Lamda表达式只是匿名委托的一种表现形式,从上面的结果可以很直观的看出,三种方式中,Lamda表达式编写的代码量最少,最后看一下执行的结果

TestExample test = new TestExample();               Console.WriteLine(test.Show());               Console.WriteLine(test.Show1());               Console.WriteLine(test.Show2());

结果是一致的,其实三者的功能是一致的,只是表现形式不一样,而三种方法中,Lamda表达式编写的代码量最少。

原文:http://yangwenju1987.blog.163.com/blog/static/3126162920112462551125/

相关知识

“x = a if b else c“是啥意思?【赋值表达式】【if语句】
使用按内容相等行为创建对象表达式
若a是int型变量,计算表达式a=25/3%3后,a为()。A、1B、2C、3D、4
逻辑表达式A+AB=( )。
表达式2/2+1>
若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是()。A.X+1=yB.++X.Y=X一一C.X=X+10=X+YD.double(X)/10
int a =8, b=6; 则表达式++a
表达式“10!=9”的值是()
欧姆定律的数学表达式为R=U/I。
若有字符串x='abbc',则表达式','.join(x.split(','))

网址: lamda表达式 Dispatcher.BeginInvoke(() => https://m.huajiangbk.com/newsview793215.html

所属分类:花卉
上一篇: 七年级上册语文第10课《再塑生命
下一篇: 【春招】字节跳动、蘑菇街四轮面试