写点什么

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:581251

评论

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

结合LangChain实现网页数据爬取

测试人

软件测试

结合LangChain实现网页数据爬取

霍格沃兹测试开发学社

【等保知识】等级保护三级系统几年测评一次?法律依据是什么?

行云管家

网络安全 等保 等级保护

优化京东JD商品详情API使用:提升商品信息获取效率的策略与实践

技术冰糖葫芦

API 编排 API 文档 API 协议

【论文速读】| 涟漪下的漩涡:对启用RAG的应用程序的实证研究

云起无垠

Code Review:提升代码质量与团队能力的利器

京东科技开发者

得物AB实验平台数据驱动决策实践

得物技术

大数据 架构 统计学 企业号2024年7月PK榜

AI 应用实战营 - 作业 六 - SD ComfyUI

德拉古蒂洛维奇

聊聊文档解析测评里的表格指标

合合技术团队

人工智能 测评 表格识别 文档解析

会话控制定义以及主要目的简单介绍

行云管家

堡垒机 IT运维 会话控制

华为云DTSE助力悦知技术架构升级、打破业务瓶颈

华为云开发者联盟

云计算 云原生 华为云开发者联盟 企业号2024年7月PK榜

供应链场景使用ClickHouse最佳实践

京东科技开发者

人工智能:重塑语言翻译的未来

天津汇柏科技有限公司

人工智能 语言翻译

电商商品信息获取的利器:阿里巴巴搜索API返回值

技术冰糖葫芦

API API 文档 API 协议

一个故事理解消息队列-上

老张

系统架构 消息队列 基础架构 稳定性保障

Code Review:提升代码质量与团队能力的利器

京东科技开发者

AutoMQ 集成 Redpanda Console

AutoMQ

分享 | 建设全渠道反欺诈平台 持续提升交易风险管控能力

芯盾时代

金融 反欺诈 风控系统 风险检测

性能测试场景设计

测试人

软件测试

2024可信数据库发展大会:TDengine CEO 陶建辉谈“做难而正确的事情”

TDengine

性能测试场景设计

霍格沃兹测试开发学社

直播预告|持续颠覆,永不止步,飞渡科技2024产品发布会即将震撼来袭,敬请期待

新消费日报

新进展!deepin M1 项目更新至 deepin V23 RC2版本

nn-30

Linux 开源 操作系统 国产操作系统 deepin

华为云应用平台AppStage运维中心,华为全球业务的加速器

华为云开发者联盟

运维 华为云 华为云开发者联盟 企业号2024年7月PK榜

选择户外LED显示屏的4个理由

Dylan

互联网 广告 信息 LED LED显示屏

Tensor 索引的使用指南及学习心得

百度Geek说

企业号2024年7月PK榜 Tensor 索引

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