AICon 北京站 Keynote 亮点揭秘,想了解 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:581024

评论

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

Android Gradle进阶配置指南

android 程序员 移动开发

在线文本中插入符号工具

入门小站

工具

37岁Android程序员被裁员,面试大厂被拒,降薪去小公司,心更凉了

android 程序员 移动开发

Activity详解与实现

android 程序员 移动开发

android Activity的Task Affinity lanchMode

android 程序员 移动开发

Android Framework学习笔记(五)应用程序启动过程

android 程序员 移动开发

Android Framework学习笔记(六)应用程序进程启动过程

android 程序员 移动开发

30K成功入职:腾讯视频面试Android经历!「含面试题

android 程序员 移动开发

2021下半年软考多媒体考试总结

Changing Lin

11月日更

A015-布局之LinearLayout

android 程序员 移动开发

Android 12 启动画面-SplashScreen

android 程序员 移动开发

Android 6

android 程序员 移动开发

20场面试斩获大厂offer,你在我这能学到什么?

android 程序员 移动开发

35岁程序员面对被优化,面对生活,房贷车贷能有多无力?

android 程序员 移动开发

Andorid Studio 制作欢乐写数字(Timer启动+帧动画)

android 程序员 移动开发

Android 11 中的存储机制更新

android 程序员 移动开发

Android ImageView及其子类 介绍+实例

android 程序员 移动开发

37岁老码农现身说法,想让薪资跨越30k,要走这3条路

android 程序员 移动开发

8年老Android开发谈:Context都没弄明白凭什么拿高薪?

android 程序员 移动开发

Android - 弹幕实现原理(附Demo源码)

android 程序员 移动开发

Android ExpandableListView折叠菜单的三层嵌套实现

android 程序员 移动开发

Android HTTP通信基础

android 程序员 移动开发

Android 118道基础面试题,面试途中不卡题

android 程序员 移动开发

linux几个不常用但是很有用的命令

入门小站

Linux

AndroiAndroid程序员最大的悲哀是什么?d程序员最大的悲哀是什么?

android 程序员 移动开发

Java自定义注解

程序员架构进阶

Java 注解分析 11月日更

Android AsyncTask源码解析

android 程序员 移动开发

45天拿下字节跳动Android研发岗offer,竟然有个面试真题库,内幕首次公开!

android 程序员 移动开发

5月份,京东 Android开发面经分享!

android 程序员 移动开发

Android ANR:Application Not Responding详解

android 程序员 移动开发

3-5年的Android工程师最容易遇到4个瓶颈是什么?

android 程序员 移动开发

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