仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1052|回复: 14
打印 上一主题 下一主题

[学习教程] ASP.NET教程之C#3.0中Lambda表达式详解仓酷云

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
可怜的程序员,还是逃不出移植的命运!在C#2.0中,微软给我们带来了一些新的特征,比方泛型,匿名托付等。但是,这些新的特征多几少会给人一种从其余言语中“抄”来的感到(比方泛型相似C++的模板,一些特征相似Java中的一些工具)。可是在C#3.0中,微软给我带来的一些新特征多是之前一切开辟言语都没有的特征。这无疑年夜年夜的表现了C#3.0在开辟言语中壮大的上风。
Lambda表达式
Lambda表达式是一个匿名函数,它能够包括表达式和语句,而且可用于创立托付或表达式目次树范例。一切Lambda表达式都利用Lambda运算符=>。关于Lambda更具体的解说人人能够参看MSDN。内里说的很分明。
这里复杂举个例子来讲明Lambda的优点。Lambda在对匿名托付的处置上供应了更分明的实行体例。比方在2.0中。我们能够写如许的代码:
  1. 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来更分明的举行参数的传送:
  1. 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对象:
  1. 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中,我们是如许声明变量并赋值的:
  1. Studentstu=newStudent();stu.StuName="Brian";stu.StuAge="21";stu.StuClass="1班";
复制代码
而在C#3.0中,我们能够如许初始化对象:
  1. Studentstu2=newStudent{StuName="Brian",StuAge="21",StuClass="1班"};
复制代码
从代码中不丢脸出,C#3.0给我们供应了很便利得体例来举行对象的初始化事情。
查询
这个想必人人都应当有所耳闻,那就是鼎鼎台甫的Linq。这是C#3.0中最共同好用的新特征之一。Linq改动了我们写数据使用程序的体例,先前,开辟职员必要思索并编写不必的代码来处置分歧数据源中的数据(SQLServer,XML,Memory....)。LINQ很好的帮我们办理了这个烦人的成绩。同时借助Lambda,我们能够更便利正确的查询我们想要的数据。
利用Linq复杂的数据查询例子:
  1. 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来声明任何范例的部分变量。
分歧点:它仅仅卖力告知编译器,该变量必要依据初始化表达式来揣度变量的范例,并且只能是部分变量。
我们能够如许声明变量:
  1. vari=10;varname="edisundong";varnumbers=newint[]{1,2,3};
复制代码
var仅仅是个关头字,它并非C#3.0中的一种新的范例,而是卖力告知编译器,该变量必要依据初始化表达式来揣度变量的范例,下面的语句相称于
  1. inti=10;stringname="edisundong";int[]numbers=newint[]{1,2,3};
复制代码
这里还必要注重几点:
1.在声明时必需同时赋值。
2.在利用var声明一个部分变量后,他仍旧具有强范例。
  1. varinteger=10;integer="edisundong";
复制代码
编译时会报Cannotimplicitlyconverttypestringtoint毛病。
3.初始化器表达式的编译期范例不克不及够是空(null)范例。
4.var的声明仅限于部分变量
扩大办法
另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-20 19:00:03 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
兰色精灵 该用户已被删除
板凳
发表于 2015-1-28 05:40:10 来自手机 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
若天明 该用户已被删除
地板
发表于 2015-1-29 10:45:38 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
简单生活 该用户已被删除
5#
发表于 2015-2-6 00:24:26 | 只看该作者
主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
因胸联盟 该用户已被删除
6#
发表于 2015-2-6 15:48:07 | 只看该作者
能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
admin 该用户已被删除
7#
发表于 2015-2-7 02:54:35 | 只看该作者
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
深爱那片海 该用户已被删除
8#
发表于 2015-2-19 21:15:30 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
山那边是海 该用户已被删除
9#
发表于 2015-2-28 19:48:12 | 只看该作者
那么,ASP.Net有哪些改进呢?
10#
 楼主| 发表于 2015-3-6 05:05:50 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
再现理想 该用户已被删除
11#
发表于 2015-3-7 06:27:25 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
飘飘悠悠 该用户已被删除
12#
发表于 2015-3-7 23:04:52 | 只看该作者
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
活着的死人 该用户已被删除
13#
发表于 2015-3-8 21:12:38 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
乐观 该用户已被删除
14#
发表于 2015-3-12 18:42:20 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
不帅 该用户已被删除
15#
发表于 2015-3-20 01:35:15 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-27 19:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表