博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何创建C# Closure ?
阅读量:5298 次
发布时间:2019-06-14

本文共 958 字,大约阅读时间需要 3 分钟。

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

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

//函数定义,参数为string,返回为string Func
myFunc = delegate(string msg) { return "Msg:" + msg; };

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

//Lambda Func
myFuncSame = msg => "Msg:" + msg;

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

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

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

public static Func
Func() { var myVar = 1; Func
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.

转载于:https://www.cnblogs.com/ldyblogs/p/Closure.html

你可能感兴趣的文章
Build Tools
查看>>
Mysql的基础使用之MariaDB安装
查看>>
单链表操作B 分类: 链表 2015-06-0...
查看>>
周赛-Heros and Swords 分类: 比赛 ...
查看>>
Error:No suitable device found: no device found for connection "System eth0"
查看>>
Go beego框架使用笔记(一)
查看>>
jQuery各种效果举例
查看>>
Day47:HTML(简介及常用标签)
查看>>
Redis.md
查看>>
软件工程课堂小测01
查看>>
大道至简阅读笔记02
查看>>
自定义日志工具LogUtil
查看>>
Linux下安装PHP遇到的各种问题
查看>>
transition
查看>>
shell脚本自动备份数据库(精简版)
查看>>
充分发挥FPGA优势 Altera首推新颖OpenCL工具
查看>>
ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序
查看>>
ORACLE手工删除数据库
查看>>
LCD 1602A
查看>>
自然语言处理(四)——一个完整的训练程序
查看>>