ASP.NET网页编程之在Lambda表达式中举行递回挪用仓酷云
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)net网页编程是开放的,相同的工具就会有很多公司在做,加上net网页编程已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。Lambda表达式是一个匿名的办法,在开辟期我们是不晓得其办法名是甚么的,以是我们要怎样递回挪用呢?假如你看过我这文章《让您知道您的办法是被何“人”挪用》的话,你应当会“啊哈”的拍一下思想,思绪就出来了,没错!!就是间接用StackFrame猎取以后实行的办法,然后间接Invoke便可。
示例代码:
<br>classTest
<br>
<br>
<br>{
<br>
<br>/**////<summary>
<br>///
<br>///</summary>
<br>///<paramname="v1"></param>
<br>///<paramname="v2"></param>
<br>///<paramname="num"></param>
<br>///<paramname="total"></param>
<br>///<returns></returns>
<br>publicdelegatelongAddMethod(longv1,longv2,intnum,intcout);
<br>
/**////<summary>
<br>///
<br>///</summary>
<br>///<paramname="addMethod"></param>
<br>///<paramname="cout"></param>
<br>staticvoidPrint(AddMethodmethod,intcout)
<br>{
<br>Console.WriteLine(method(0,1,2,cout));
<br>}
<br>
<br>staticvoidMain()
<br>{
<br>//求0,1,1,2,3,5,8
<br>.相似的数据行列在第30个地位的数
<br>Print((v1,v2,num,cout)=>
<br>{
<br>Console.Write(v1);
<br>Console.Write(",");
<br>
<br>num++;
<br>if(num==cout)
<br>{
<br>Console.Write(v2);
<br>Console.WriteLine();
<br>returnv1+v2;
<br>}
<br>else
<br>{
<br>//获得以后办法
<br>StackFrameframe=newStackFrame(0);
<br>//递回挪用
return(long)(frame.GetMethod().Invoke(num,newobject[]
<br>{v2,(v1+v2),num,cout}));
<br>}
<br>},30);
<br>Console.Read();
<br>}
<br>}
我们的代码乐成运转了
<br>,乐成的求出在第30个地位的数值是:514229
当时,.NET里另有一个东东能够便利的失掉以后挪用办法的援用,这东东就是MethodBase,其有一个静态办法GetCurrentMethod可间接猎取以后实行的办法援用,以是我们能够将下面的StackFrame处的两句代码改成以下:
<br>//递回挪用
return(long)(MethodBase.GetCurrentMethod().Invoke(num,newobject[]
<br>{v2,(v1+v2),num,cout}));
来自:http://www.ckuyun.com/kingthy/archive/2008/04/20/1162248.html
实行后的了局都是一样的
<br>(纷歧样才怪了Orz)效率会有不少的变化。而实际上net网页编程是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。 HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. 通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 逐步缩小出错代码段的范围,最终确定错误代码的位置。
页:
[1]