仓酷云

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

[学习教程] ASP.NET网页编程之在Lambda表达式中举行递回挪用仓酷云

[复制链接]
小妖女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:29:43 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

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

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

x
你所列的那些其实差不多都可以称为应用服务器(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网页编程是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。
小妖女 该用户已被删除
沙发
 楼主| 发表于 2015-1-30 12:35:51 | 显示全部楼层
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-21 15:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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