VB的未来计划

2013 年 12 月 25 日

Lucian Wischik 回应了 Mads Torgersen 的演讲,提出了 Visual Basic 语言方面一些可能的变化。这些只是计划,一切还没有定数。这些变化主要是为了减少样板代码,并且没有提供我们在 VB 10 或 11 中看到的重大改变。

只读属性

只读自动属性与 VB 语法可谓天作之合。只需要在属性声明前面加上 ReadOnly 关键字即可。它能保证只生成 getter,不过仍然可以在构造函数中设置该值。

ReadOnly Property Name As String注释

VB 中的注释现在不能很好地与隐式续行符配合。因此 Lucian 列出的的第一个 VB 特性就是允许在隐式续行符后面使用注释。

字符串

Visual Basic 中的字符串目前不支持多行。因此首要的任务是允许这一点。其行为类似 C#的逐字字符串,但不需要前缀。

更有趣的特性是字符串插值(String Interpolation)。使用 $"前缀,将不需要显式调用 String.Format。它还消除了因为算错替代变量的数目和位置而导致的异常。例如下面的代码:

Dim query = $"http://{ url }?name={ Escape(name) }&id={ Escape(id) }&o=xml"在差不多 4 年前,Miguel de Icaza 就曾提议在C#中支持字符串插值,并构建了一个工作原型。

字面量

Visual Basic 的日期字面量基于美国通用标准,这对于非美国开发者是相当不公平的。因此新的计划中可以允许 ISO 格式化的日期字面量。

很多语言中已经具备的二进制字面量也被列入计划当中,用 &B 前缀表示。这对标志位风格的枚举来说是一个福音。

分部接口和模块

这项提议允许在 VB 中加入分部接口和模块,其用法与分部类相似。与分部类相同,这也是为了用于代码生成器。

空传播

与 C#类似,VB 团队也考虑提供空传播操作符。这样在调用方法之前就不再需要空验证。目前他们有两种选择,第一种与 C#一样。注意除了?. 外,还有?()。

Dim y As Integer = x?.y?(3)?.z如果?. 或?(操作符的左边有空值,y 将得到默认值 z。

函数参数

与 C#类似,VB 也希望 params 关键字支持 IEnumerable 类型的参数,而不是只支持数组。

同样跟 C#类似的是,他们也希望能够在 out 实参中声明本地变量。

If Integer.TryParse(s, Out x) Then这行代码会创建 x 变量,就好像它是在代码上面的语句中声明的。

他们也在考虑内联地声明其他变量。

If ( Dim x = GetValue()) > 15 Then Console .WriteLine(x)其他方面

目前 VB 使用 IsNot 进行引用比较,但不能用于类型比较(如 TypeOf 操作符)。这项建议填补了这一空白。

原文英文链接: Future Plans for VB

2013 年 12 月 25 日 09:02961
用户头像

发布了 59 篇内容, 共 18.2 次阅读, 收获喜欢 3 次。

关注

评论

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

卧槽,接到一个阎王的需求

码农神说

程序员

自定义构造python白名单__builtins__

么么哒

Python

Server Queue 提高 QPS

风含叶

Python kafka 后端 队列

一个在游戏行业摸爬滚打了十几年的人,为何我对这本书情有独钟

图灵社区

游戏开发 游戏制作 世嘉培训教材

“Plus Token”传销主犯被公诉!警惕,区块链不是“取款链”!

CECBC区块链专委会

1024讲话 CECBC 区块链技术 人才发展 培训

架构师训练营0期开营

刁架构

架构师

「首度揭秘」大规模HPC生产环境 IO 特征

焱融科技

sds io 高性能 存储 焱融科技

2020智源-京东多模态对话挑战赛开战 产学研联合推动AI技术发展

DT极客

为什么要学习 Markdown?究竟有什么用?

JackTian

markdown markdown语法 markdown编辑器

这场大数据+AI Meetup,一次性安排了大数据当下热门话题

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

游戏夜读 | 改写图形API的意义

game1night

Weex开发:页面跳转以及Android端多应用选择窗口的处理

brave heart

android Vue 大前端 跨平台 Weex

GitHub 上十个好用的软件

彭宏豪95

GitHub 效率 工具

Android 通过opencv实现人脸识别,追踪

sar

android OpenCV 人脸识别

神经网络中为什么不能将权重初始值设置为一样的值

王坤祥

神经网络 学习

互联网省份数据大揭秘,看看哪些地方是互联网的戈壁滩?

非著名程序员

程序员 互联网 IT

kudmp介绍和安装

唯爱

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十一)JUnit概述

编程道与术

Java 编程 软件测试 TDD 单元测试

用户故事为什么要关联开发数据?

Worktile

敏捷开发 开发数据

10分钟了解Flink

代码诗人

你有信息焦虑症吗?

Neco.W

学习 创业 知识体系

git | IDEA 中如何压缩提交(压缩commit后再push 图文演示)

YoungZY

开发者工具 IDEA 开发工具

写代码没几天,遇到一堆报错,我该怎么办

刘早起😶

Python 程序人生 程序员成长

关于软件测试的三点思考

卓然

软件测试 测试 测试的价值 联现技术咖

探索 Go 语言数据类型的内部实现

TuringTuring

golang 内存模型 高效

“新基建”方兴未艾,Smartbi Mining如何为产业数字化转型赋能?

infoq小陈

如何设计数据中台

数据社

大数据 数据中台 数据仓库

从位图到布隆过滤器

王坤祥

位图 布隆过滤器

Python deepcopy一个优化

么么哒

Python

券商也“网红”,证券行业IT服务运维发展按下“快进键”

BonreeAPM

运维 APM 证券 券商 行情

GrowingIO 大数据多维分析自动化测试实践

GrowingIO技术专栏

大数据 自动化测试 parewise

VB的未来计划-InfoQ