j9国际站|(官网)点击登录

新疆j9九游会

本站首页 j9九游会 乐成案例 公司新闻 公司简介 客服中心 软件技能 网站建立
  您如今的地位: 新疆二域j9九游会公司 >> 开辟言语 >> 文章注释

学习怎样在Lambda表达式举行递归挪用

   看到篇很好的文章,介绍给各人看看
    Lambda表达式是一个匿名的办法,在开辟期j9九游会是不晓得其办法名是什么的,以是j9九游会要怎样递归挪用呢?假如你看过我这文章《让您晓得您的办法是被何“人”挪用 》的话,你应该会“啊哈”的拍一下头脑,思绪就出来了,没错!!便是间接用StackFrame获取以后实行的办法,然后间接Invoke即可。
示例代码:
    class Test
    {
        /**//// <summary>
        ///
        /// </summary>
        /// <param name="v1"></param>
        /// <param name="v2"></param>
        /// <param name="num"></param>
        /// <param name="total"></param>
        /// <returns></returns>
        public delegate long AddMethod(long v1, long v2, int num, int cout);

        /**//// <summary>
        ///
        /// </summary>
        /// <param name="addMethod"></param>
        /// <param name="cout"></param>
        static void Print(AddMethod method, int cout)
        {
            Console.WriteLine(method(0, 1, 2, cout));
        }
        static void Main()
        {
            //求0,1,1,2,3,5,8.相似的数据行列步队在第30个地位的数
            Print((v1, v2, num, cout) =>
                {
                    Console.Write(v1);
                    Console.Write(",");

                    num++;
                    if (num == cout)
                    {
                        Console.Write(v2);  
                        Console.WriteLine();
                        return v1 + v2;
                    }
                    else
                    {                       
                        //获得以后办法
                        StackFrame frame = new StackFrame(0);
                        //递归挪用
                        return (long)(frame.GetMethod().Invoke(num, new object[] { v2, (v1 + v2), num, cout }));
                    }
                }, 30);
            Console.Read();
        }
    }
    j9九游会的代码乐成运转了,乐成的求出在第30个地位的数值是:514229当时,.NET里另有一个东东可以利便的失掉以后挪用办法的援用,这东东便是MethodBase,其有一个静态办法GetCurrentMethod 可间接获取以后实行的办法援用,以是j9九游会可以将下面的StackFrame处的两句代码改为如下:
                        //递归挪用
                        return (long)(MethodBase.GetCurrentMethod().Invoke(num, new object[] { v2, (v1 + v2), num, cout }));
实行后的后果都是一样的(纷歧样才怪了Orz)

作者:未知 | 文章泉源:cnblogs | 更新>###2:35

  • 上一篇文章:

  • 下一篇文章:

  • 相干文章:
    没有相干文章
    软件技能
    · 开辟言语
    · Java技能
    · .Net技能
    · 数据库开辟
    最新文章  
    ·搜集整理的asp.net的验证方
    ·种种FOR循环布局的整理
    ·软件项目开辟中应该思索那
    ·搜集整理的javascript sel
    ·j9九游会中项目司理有那些
    ·学习怎样在Lambda表达式进
    ·C++底子知识:布局体数据的
    ·C#完成短信发送步伐的例子
    ·sun近来修补了一局部java的
    ·rss定制的别的一种完成方法
    ·delphi完成使用arp诈骗来实
    ·底子学习:基于WF的流程框
    ·网络编程中怎样得知一次数
    ·怎样逆序输入单链表?
    ·j9九游会历程中的功能设计
    关于j9九游会 | j9九游会 | 下载试用 | 客服中心 | 联系j9九游会 | 相关单位 | 网站舆图 | 新疆电子舆图 | RSS订阅
    版权一切 © 2016 新疆二域j9九游会网 www.k8w.net All Rights Reserved
    新疆j9九游会>###、4811639.
    ### ;>###华联大厦A-5C 邮编:830000