AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

评论

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

【愚公系列】2022年7月 Go教学课程 003-IDE的安装和基本使用

愚公搬代码

7月月更

Vuex(三)

小恺

7月日更

蓝队攻防演练中的三段作战

穿过生命散发芬芳

攻防演练 7月月更

C语言中sizeof操作符的坑

Albert Edison

c++ C语言 7月月更 sizeof

浅聊一下中间件

为自己带盐

中间件 7月月更 dotnetcore

HPDC智能基座人才发展峰会随笔

乌龟哥哥

7月月更

可观测|时序数据降采样在Prometheus实践复盘

阿里巴巴云原生

阿里云 云原生 Prometheus 可观测

ORACLE进阶(三)数据字典详解

No Silver Bullet

oracle 7月月更 数据字典

牛客java选择题每日打卡Day6

京与旧铺

7月月更

图解网络:什么是网关负载均衡协议GLBP?

wljslmz

网络协议 7月月更 GLBP 图解网络 网关负载均衡协议

后CentOS时代的操作系统漫谈

冯骐

centos 开源 openEuler 国产化 Anolis

LLVM之父Chris Lattner:为什么我们要重建AI基础设施软件

OneFlow

人工智能 软件系统

算法入门很简单:链表题套路及精选题目

宇宙之一粟

链表 7月月更

【LeetCode】判断矩阵是否是一个 X 矩阵Java题解

Albert

LeetCode 7月月更

认识ThreadPoolExecutor

zarmnosaj

7月月更

什么是数据治理?为何华为愿意200万年薪聘数据治理专家?

雨果

数据治理 DaaS数据即服务

Java实现单例模式

lambochen

单例模式

官宣!第三届云原生编程挑战赛正式启动!

阿里巴巴云原生

阿里云 Serverless 边缘计算 ACK 云原生编程挑战赛

OpenFeign

急需上岸的小谢

7月月更

TLA+ 入门教程(1):形式化方法简介

多颗糖

分布式系统 TLA+

跨域请求

Jason199

跨域 7月月更

如何用一个插件解决 Serverless 灰度发布难题?

阿里巴巴云原生

阿里云 Serverless 云原生 插件 灰度发布

线上故障突突突?如何紧急诊断、排查与恢复

阿里巴巴云原生

阿里云 微服务 云原生 故障恢复 诊断

2022-Java后端工程师面试指南-(Java基础篇)

自然

Java’ 7月月更

关于栈区、堆区、全局区、文字常量区、程序代码区

NewBoy

前端 移动端 iOS 知识体系 7月月更

繁华落尽、物是人非:个人站长该何去何从

石头IT视角

Qemu Linux

贾献华

7月日更 7月月更

leetcode 72. Edit Distance 编辑距离(中等)

okokabcd

LeetCode 动态规划 算法与数据结构

质量体系建设之路的分分合合

声网

创业讲堂 生态专栏

【Docker 那些事儿】容器为什么傲娇?全靠Hub撑腰

Albert Edison

7月月更

OpenHarmony资源管理详解

坚果

HarmonyOS OpenHarmony 6月月更

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