写点什么

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

评论

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

开启全球化新篇章,数字经济推动消费出海论坛在京召开

千流出海

出海 消费品企业 出海企业

超详细API插件使用教程,教你开发AI垃圾分类机器人

华为云开发者联盟

人工智能 API 华为云 华为云开发者联盟 企业号9月PK榜

大模型时代,如何快速开发AI应用

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号9月PK榜

英特尔首席执行官帕特·基辛格会前畅谈2023年on技术创新大会

E科讯

CodeArts Check代码检查服务用户声音反馈集锦(5)

云计算 软件开发 华为云 代码检查

解锁 zkSync Era:开创全新的 Layer 2 扩展时代

Footprint Analytics

以太坊 eth Layer 2

AI在玩一种很新的艺术,700万网友在线围观,ControlNet又立功了

Openlab_cosmoplat

AI

腾讯云大数据平台 TBDS全面升级,加速构建安全可控的大数据生态

腾讯云大数据

TBDS

华为重磅亮相 KubeCon China 2023,与你共启大模型时代的云原生!

华为云开源

云原生 华为云 KubeCON

满足更高算力需求,英特尔率先推出用于下一代先进封装的玻璃基板

E科讯

22H2 中国边缘公有云服务市场 Top2,百度智能云构建让智算无处不在的分布式云

Baidu AICLOUD

边缘计算 分布式云 大模型

利用ChatGPT实现快速网站模板构建

百度开发者中心

#人工智能 ChatGPT 千帆大模型平台

不可不知的七个Docker优秀实践

树上有只程序猿

Docker 容器 镜像

数据探索神器:火山引擎DataLeap Notebook 揭秘

字节跳动数据平台

数据库 数据中台 数据治理 数据安全 企业号9月PK榜

火山引擎A/B测试在消费行业的案例实践

字节跳动数据平台

数据库 ab测试 对比实验 数字化增长 企业号9月PK榜

至顶科技携手中青博联发布品牌升级千流出海计划 助力中国企业走向海外市场

千流出海

出海 出海服务商

【腾讯云 TDSQL-C Serverless 产品测评】"橡皮筋"一样的数据库

指剑

腾讯云 Serverless 数据库、

引领智能对话革命的创新网络工程技术

百度开发者中心

智能对话 #人工智能 ChatGPT

保持预测一致性,推动企业实现未来价值

智达方通

数据孤岛 全面预算管理系统 预测分析

CodeArts Check代码检查服务用户声音反馈集锦(4)

云计算 华为云 代码检查

eBPF 仅仅是实现可观测性的一种手段

JainChen

可观测性 ebpf Kubernetes, 云原生, eBPF #监控

2023英特尔on技术创新大会:助力开发者,让AI无处不在

E科讯

五个很实用的IDEA使用技巧

越长大越悲伤

Java Python IDEA pycharm

免费、安全、可靠!一站式构建平台 ABS 介绍及实例演示 | 龙蜥技术

OpenAnolis小助手

开源 操作系统 龙蜥社区 龙蜥大讲堂 abs

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