设为首页 加入收藏

TOP

C#函数式编程(六)
2017-10-13 10:42:28 】 浏览:10586
Tags:函数 编程
bsp;          Console.WriteLine("Done!");

        }

严格求值策略:首先定义一个返回Int的方法

        static int DoSomeThing()

        {

            Console.WriteLine("DoSomeThing Function Excuted");

            return 7;

        }

static void Stricteva luation(bool flag, int dsVal)

        {

            if (flag)

                Console.WriteLine("dsVal result value is {0}", dsVal);

            Console.WriteLine("Done!");

        }

调用:Stricteva luation(false, DoSomeThing());

输出:

DoSomeThing Function Excuted

Done!

虽然flag为false,但是DoSomeThing还是被执行了,如何改变?

将第二个参数改成方法:

static void Lazyeva luation(bool flag,Func<int> dsthing)

        {

            if (flag)

                Console.WriteLine("dsthing result value is {0}", dsthing());

            Console.WriteLine("Done!");

        }

调用:Stricteva luation(false, DoSomeThing);

 

如果flag为true,并且其中调用两次,那么DoSomeThing就会被执行两次。再次修改

static void Lazyeva luationEx(bool flag, Func<int> dsthing)

        {

            Lazy<int> lzDshting = new Lazy<int>(dsthing);

            if (flag)

      Console.WriteLine("dsthing square result value is {0}", lzDshting.Value * lzDshting.Value);

            Console.WriteLine("Done!");

        }

参考 http://www.cnblogs.com/yaozhenfa/category/652982.html

 

 

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C#利用WinForm调用WebServices实.. 下一篇如何C#操作SQLite数据库

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目