仓酷云
标题:
ASP.NET教程之C#3.0中Lambda表达式详解仓酷云
[打印本页]
作者:
仓酷云
时间:
2015-1-18 11:16
标题:
ASP.NET教程之C#3.0中Lambda表达式详解仓酷云
可怜的程序员,还是逃不出移植的命运!在C#2.0中,微软给我们带来了一些新的特征,比方泛型,匿名托付等。但是,这些新的特征多几少会给人一种从其余言语中“抄”来的感到(比方泛型相似C++的模板,一些特征相似Java中的一些工具)。可是在C#3.0中,微软给我带来的一些新特征多是之前一切开辟言语都没有的特征。这无疑年夜年夜的表现了C#3.0在开辟言语中壮大的上风。
Lambda表达式
Lambda表达式是一个匿名函数,它能够包括表达式和语句,而且可用于创立托付或表达式目次树范例。一切Lambda表达式都利用Lambda运算符=>。关于Lambda更具体的解说人人能够参看MSDN。内里说的很分明。
这里复杂举个例子来讲明Lambda的优点。Lambda在对匿名托付的处置上供应了更分明的实行体例。比方在2.0中。我们能够写如许的代码:
CodepublicclassExample{publicstaticvoidDemo(System.Windows.Controls.TextBlockoutputBlock){Funcconvert=delegate(strings){returns.ToUpper();};stringname="Dakota";outputBlock.Text+=convert(name)+"n";}}
复制代码
在C#中将Func<(Of<(T,TResult>)>)托付与匿名办法一同利用。
在3.0中,我们可使用Lambda来更分明的举行参数的传送:
CodepublicclassExample{publicstaticvoidDemo(System.Windows.Controls.TextBlockoutputBlock){Funcconvert=s=>s.ToUpper();stringname="Dakota";outputBlock.Text+=convert(name)+"n";}}
复制代码
Lambda表达式的基本范例是泛型Func托付之一。如许能以参数情势传送lambda表达式,而不必显式将其分派给托付。特别是,由于System.Linq定名空间中很多范例办法具有Func<(Of<(T,TResult>)>)参数,因而能够给这些办法传送lambda表达式,而不必显式实例化Func<(Of<(T,TResult>)>)托付。如许可使我们的代码加倍简便,逻辑上更容易于了解。
对象的初始化
在C#中,对象的初始化也做了一些改善。一个新的功效就是供应了更便利的语律例则来声明变量的值。
假设我们声明一个Student对象:
CodepublicclassStudent{privatestring_stuName;privatestring_stuAge;privateint_stuClass;publicStudent(){}publicstringStuName{get{return_stuName;}set{_stuName=value;}}publicstringStuAge{get{return_stuAge;}set{_stuAge=value;}}publicintStuClass{get{return_stuClass;}set{_stuClass=value;}}}
复制代码
在C#2.0中,我们是如许声明变量并赋值的:
Studentstu=newStudent();stu.StuName="Brian";stu.StuAge="21";stu.StuClass="1班";
复制代码
而在C#3.0中,我们能够如许初始化对象:
Studentstu2=newStudent{StuName="Brian",StuAge="21",StuClass="1班"};
复制代码
从代码中不丢脸出,C#3.0给我们供应了很便利得体例来举行对象的初始化事情。
查询
这个想必人人都应当有所耳闻,那就是鼎鼎台甫的Linq。这是C#3.0中最共同好用的新特征之一。Linq改动了我们写数据使用程序的体例,先前,开辟职员必要思索并编写不必的代码来处置分歧数据源中的数据(SQLServer,XML,Memory....)。LINQ很好的帮我们办理了这个烦人的成绩。同时借助Lambda,我们能够更便利正确的查询我们想要的数据。
利用Linq复杂的数据查询例子:
CodeprivatevoidBindGridView(stringcriteria){stringstrConn=ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;NorthwindDbdb=newNorthwindDb(strConn);IEnumerableresults;if(criteria==string.Empty){results=db.Employee.ToArray();}else{results=(fromcindb.Employeewherec.FirstName.Contains(criteria)selectc).ToArray();}GridView1.DataSource=results;GridView1.DataBind();}
复制代码
变量声明
这里要说的是var。var是C#3.0中供应的用于声明变量的关头字,开辟职员能够不思索变量的范例就能够对变量举行声明(这一点用法十分相似Javascript)。可是二者仍是有些差别。
不异点:用var来声明任何范例的部分变量。
分歧点:它仅仅卖力告知编译器,该变量必要依据初始化表达式来揣度变量的范例,并且只能是部分变量。
我们能够如许声明变量:
vari=10;varname="edisundong";varnumbers=newint[]{1,2,3};
复制代码
var仅仅是个关头字,它并非C#3.0中的一种新的范例,而是卖力告知编译器,该变量必要依据初始化表达式来揣度变量的范例,下面的语句相称于
inti=10;stringname="edisundong";int[]numbers=newint[]{1,2,3};
复制代码
这里还必要注重几点:
1.在声明时必需同时赋值。
2.在利用var声明一个部分变量后,他仍旧具有强范例。
varinteger=10;integer="edisundong";
复制代码
编译时会报Cannotimplicitlyconverttypestringtoint毛病。
3.初始化器表达式的编译期范例不克不及够是空(null)范例。
4.var的声明仅限于部分变量
扩大办法
另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。
作者:
谁可相欹
时间:
2015-1-20 19:00
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
作者:
兰色精灵
时间:
2015-1-28 05:40
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
作者:
若天明
时间:
2015-1-29 10:45
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
作者:
简单生活
时间:
2015-2-6 00:24
主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
作者:
因胸联盟
时间:
2015-2-6 15:48
能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
作者:
admin
时间:
2015-2-7 02:54
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
作者:
深爱那片海
时间:
2015-2-19 21:15
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
作者:
山那边是海
时间:
2015-2-28 19:48
那么,ASP.Net有哪些改进呢?
作者:
仓酷云
时间:
2015-3-6 05:05
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
作者:
再现理想
时间:
2015-3-7 06:27
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
作者:
飘飘悠悠
时间:
2015-3-7 23:04
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
作者:
活着的死人
时间:
2015-3-8 21:12
主流网站开发语言之PHP
HP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
作者:
乐观
时间:
2015-3-12 18:42
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
作者:
不帅
时间:
2015-3-20 01:35
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2