如何创建C# Closure ?
来源:互联网 发布:js获取id的属性值 编辑:程序博客网 时间:2024/06/05 10:01
JavaScript中一个重要的概念就是闭包,闭包在JavaScript中有大量的应用,但是你知道么?C#也可以创建Closure。下面就介绍一下如何在C#中创建神奇的闭包。
在这之前,我们必须先知道如何在C#中定义函数
//函数定义,参数为string,返回为string Func<string, string> myFunc = delegate(string msg) { return "Msg:" + msg; };
利用Lambda表达式也可以简化上述的代码,但是效果一样:
//Lambda Func<string, string> myFuncSame = msg => "Msg:" + msg;
定义好函数后,可以进行调用:
//函数调用 string message= myFuncSame("Hello world");
定义一个带外部变量(相对于内嵌函数而言)的嵌套函数,外部函数将内部嵌套的函数进行返回:
public static Func<int, int> Func() { var myVar = 1; Func<int, int> inc = delegate(int var1) { //myVar能够记录上一次调用后的状态(值) myVar = myVar + 1; return var1 + myVar; }; return inc; }
C# Closure调用如下所示:
static void CsharpClosures() { var inc = Func(); Console.WriteLine(inc(5));//7 Console.WriteLine(inc(6));//9 }
当第二次调用inc(6)时,此时函数内变量myVar并未像第一次调用函数时进行重新初始化(var myVar=1),而是保留了第一次运算的值,即 2,因此inc(6)返回的结果为(2+1+6)=9.
以上动图由“图斗罗”提供
阅读全文
0 0
- 如何创建C# Closure ?
- 如何创建C# Closure ?
- C#创建如何创建DataTable
- C#如何创建类中类?
- C#如何创建WebService
- PHP Closure创建匿名函数
- C#如何创建Xml文件
- 如何合理创建c#对象
- 如何:创建 C# 控制台应用程序
- 如何合理创建c#对象
- C#如何创建Execel文件
- C#如何创建Execel文件
- C#如何创建、读取cookie
- C# 如何创建一个文件夹
- 如何使用C#创建WebService
- C#中如何创建文件夹
- 如何使用C#创建WebService
- C#中如何创建文件夹
- 单例设计模式
- JSP核心标签库
- FFmpeg系列-1-在linux中安装
- UVA
- vim插件管理
- 如何创建C# Closure ?
- HDU-4793 Collision 计算几何 解方程
- 不使用多线程, 使用select, 实现http请求的异步
- 栈和队列---由两个栈组成队列
- Java 日期比较大小
- Ubuntu16.04 python3 caffe安装
- RTP协议全解析(H264码流和PS流
- synergy 使用说明以及资源分享
- nginx配置location总结及rewrite规则写法