写点什么

Visual Basic 中的闭包限制

  • 2007-08-23
  • 本文字数:645 字

    阅读完需:约 2 分钟

在 Jared Parsons 关于闭包介绍系列的第六篇章里,他谈到在Visual Basic 中闭包限制问题。虽然没有明确说明,这儿的许多限制对C#同样适用。

要了解闭包,首先需要了解匿名函数。匿名函数通常通过分配到一个代理变量,来在其他函数的上下文中定义。

为了在匿名函数和包含它们的函数中共享数据,常用的方法就是使用闭包。当一个闭包“捕获”一个变量时,它就会将这个变量提取出它的本地范围,移到一个匿名对象里。对于成员变量,一般而言是被保留在包含它的对象里。虽然大多数本地和成员变量可以被提取,但有一些限制。

第一个限制是不能提取ByRef 参数变量。在ByVal 参数为本地变量时,ByRef 变量必须将自己的值复制回所有环境下的调用方法里。对于普通的参数来说,这样做没有什么必要,它也很难通过闭包来确保可用性。

第二个限制是结构的成员变量不能被提取。因为结构,也就是通常所说的值类型,可以被用在堆栈里,并不能总是为它们创建一个指针。最好地方法是为结构的副本创建指针,以替代闭包的使用。

需要注意的是包含全局结构的变量可以被捕捉到。只有在通过“Me”关键字访问的结构里的成员变量才不可用。

常见的限制类型,如System.TypedReference、System.ArgIterator 和System.RuntimeArgumentHandle 是不能被捕捉的。因为在大多数程序里不会用到它们,所以也不会影响到任何人。

因为闭包的范围规则,开发时不能使用goto 语句进入包含闭包的代码块。最后,关于Error GoTo 的继承声明也根本不能在包含闭包的方法里使用。

查看英文原文: Limitations of Closures in Visual Basic

2007-08-23 01:58755

评论

发布
暂无评论
发现更多内容

TiDB 7.5 LTS 发版丨提升规模化场景下关键应用的稳定性和成本的灵活性

PingCAP

数据库 TiDB pingCAP

云原生场景下月省 10 万元资源成本,这家企业做对了什么

阿里巴巴云原生

阿里云 容器 云原生

活动回顾|阿里云云原生 Serverless 技术实践营深圳站回放 & PPT 下载

阿里巴巴云原生

阿里云 Serverless 云原生

高效打通,释放人力——聚道云软件连接器助力生产制造行业人力资源信息交互

聚道云软件连接器

聚道云实现浙商银行与易快报完美互通,助力企业财务完成数字化转型

聚道云软件连接器

为什么市场称SoBit 是铭文跨链赛道真正的龙头?

股市老人

普及旗舰音质,打造一加用户首选!一加 Buds 3定档1月4日发布

编程猫

C 语言中的 switch 语句和 while 循环详解

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

Koordinator 助力云原生应用性能提升:小红书混部技术实践

阿里巴巴云原生

阿里云 云原生 Koordinator

TiDB 7.1 多租户在中泰证券中的应用

PingCAP

数据库 TiDB

2023 年中国金融级分布式数据库市场报告:TiDB 位列领导者梯队,创新能力与增长指数表现突出

PingCAP

数据库 TiDB

云原生时代的安全变化趋势

穿过生命散发芬芳

七功能遥控编解码芯片

梦笔生花

Kubernetes常见的三种网络插件Flannel、Calico、Weave Net的比较:

虚实的星空

0.1+0.2≠0.3,揭秘Python自带的Bug

程序员晚枫

Python

多语言应用监控最优选,ARMS 应用监控 eBPF 版正式发布

阿里巴巴云原生

阿里云 云原生

Solana 生态铭文跨链桥 Sobit 是何神圣?其场外白名单已达到1200U

BlockChain先知

Kubernetes调试终极武器: K8sGPT

俞凡

人工智能 Kubernetes SRE ChatGPT

聚道云受邀参加【中国算谷·智慧庆阳】算力行动推进大会

聚道云软件连接器

MSE Serverless 正式商用,构建低成本高弹性的微服务架构

阿里巴巴云原生

阿里云 微服务 云原生

构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践

阿里巴巴云原生

阿里云 Serverless 云原生

2024 Python开发者转型Go开发

K8sCat

Python Go 语言

Solana 生态铭文跨链桥 Sobit 是何神圣?其场外白名单已达到1200U

股市老人

TiDB 助力保险业首个全栈自主的核心保单系统成功投产

PingCAP

数据库 TiDB 保险业

场外白名单达到1200U?Solana 生态铭文跨链桥 Sobit 是何神圣?

石头财经

轻松搭建基于服务网格的 AI 应用,然后开始玩

阿里巴巴云原生

阿里云 云原生 asm

内嵌AI智能会议、AI临时分身、AI降噪等创新技术,ThinkPad X1 Carbon AI发布

科技范儿

看孙玲TEDX演讲有感

五月的风

Visual Basic中的闭包限制_.NET_Jonathan Allen_InfoQ精选文章