星空网 > 软件开发 > ASP.net

如何创建C# Closure?

JavaScript中一个重要的概念就是闭包,闭包在JavaScript中有大量的应用,但是你知道么?C#也可以创建Closure。下面就介绍一下如何在C#中创建神奇的闭包。

  在这之前,我们必须先知道如何在C#中定义函数

1 //函数定义,参数为string,返回为string2 Func<string, string> myFunc = delegate(string msg)3 {4    return "Msg:" + msg;5 };

  利用Lambda表达式也可以简化上述的代码,但是效果一样:

1 //Lambda2 Func<string, string> myFuncSame = msg => "Msg:" + msg;

  定义好函数后,可以进行调用:

1 //函数调用2 string message= myFuncSame("Hello world");

  定义一个带外部变量(相对于内嵌函数而言)的嵌套函数,外部函数将内部嵌套的函数进行返回:

如何创建C# Closure?
 1 public static Func<int, int> Func() 2 { 3   var myVar = 1; 4   Func<int, int> inc = delegate(int var1) 5   { 6     //myVar能够记录上一次调用后的状态(值) 7     myVar = myVar + 1; 8     return var1 + myVar; 9   };10   return inc;11 }
如何创建C# Closure?

  C# Closure调用如下所示:

1 static void CsharpClosures()2 {3   var inc = Func();4   Console.WriteLine(inc(5));//75   Console.WriteLine(inc(6));//96 }

  当第二次调用inc(6)时,此时函数内变量myVar并未像第一次调用函数时进行重新初始化(var myVar=1),而是保留了第一次运算的值,即 2,因此inc(6)返回的结果为(2+1+6)=9.


水平有限,望各位园友不吝赐教!如果觉得不错,请点击推荐和关注! 
出处:http://www.cnblogs.com/isaboy/ 
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。



原标题:如何创建C# Closure?

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

国际快递 翻译:https://www.goluckyvip.com/tag/101064.html
斑头雁国际物流:https://www.goluckyvip.com/tag/101065.html
附近的国际物流:https://www.goluckyvip.com/tag/101066.html
晶达丰国际物流:https://www.goluckyvip.com/tag/101067.html
中俄国际铁路货运:https://www.goluckyvip.com/tag/101068.html
奥士达国际物流:https://www.goluckyvip.com/tag/101069.html
延安市区景点都收费吗 延安景点要门票吗:https://www.vstour.cn/a/408250.html
大同旅游攻略一日游 山西大同一日游旅游景点有哪些:https://www.vstour.cn/a/408251.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流