扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡介 客服中心 軟件技術 網(wǎng)站建設
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> 開發(fā)語言 >> 文章正文

學習如何在Lambda表達式進行遞歸調用

   看到篇很好的文章,介紹給大家看看
    Lambda表達式是一個匿名的方法,在開發(fā)期我們是不知道其方法名是什么的,所以我們要怎么遞歸調用呢?如果你看過我這文章《讓您知道您的方法是被何“人”調用 》的話,你應該會“啊哈”的拍一下頭腦,思路就出來了,沒錯!!就是直接用StackFrame獲取當前執(zhí)行的方法,然后直接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.類似的數(shù)據(jù)隊列在第30個位置的數(shù)
            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();
        }
    }
    我們的代碼成功運行了,成功的求出在第30個位置的數(shù)值是:514229其時,.NET里還有一個東東可以方便的得到當前調用方法的引用,這東東就是MethodBase,其有一個靜態(tài)方法GetCurrentMethod 可直接獲取當前執(zhí)行的方法引用,所以我們可以將上面的StackFrame處的兩句代碼改為如下:
                        //遞歸調用
                        return (long)(MethodBase.GetCurrentMethod().Invoke(num, new object[] { v2, (v1 + v2), num, cout }));
執(zhí)行后的結果都是一樣的(不一樣才怪了Orz)

作者:未知 | 文章來源:cnblogs | 更新時間:2008-4-20 22:32:35

  • 上一篇文章:

  • 下一篇文章:

  • 相關文章:
    沒有相關文章
    軟件技術
    · 開發(fā)語言
    · Java技術
    · .Net技術
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·搜集整理的asp.net的驗證方
    ·各種FOR循環(huán)結構的整理
    ·軟件項目開發(fā)中應該考慮那
    ·搜集整理的javascript sel
    ·軟件開發(fā)中項目經理有那些
    ·學習如何在Lambda表達式進
    ·C++基礎知識:結構體數(shù)據(jù)的
    ·C#實現(xiàn)短信發(fā)送程序的例子
    ·sun最近修補了一部分java的
    ·rss定制的另外一種實現(xiàn)方式
    ·delphi實現(xiàn)利用arp欺騙來實
    ·基礎學習:基于WF的流程框
    ·網(wǎng)絡編程中怎樣得知一次數(shù)
    ·如何逆序輸出單鏈表?
    ·軟件開發(fā)過程中的性能設計
    關于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號
    新疆軟件開發(fā)總機:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    绵阳市| 石棉县| 南雄市| 井陉县| 南靖县| 彭阳县| 邓州市| 习水县| 仲巴县| 曲周县| 井陉县| 弥勒县| 靖边县| 曲松县| 安多县| 且末县| 清徐县| 涟水县| 富锦市| 平定县| 九寨沟县| 仪陇县| 囊谦县| 江口县| 三台县| 青冈县| 漳浦县| 司法| 巴中市| 洪洞县| 宁南县| 普洱| 枝江市| 元氏县| 盱眙县| 闵行区| 江油市| 万荣县| 鹤壁市| 仁布县| 太康县|