BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

VB的未来计划

| 作者 Jonathan Allen 关注 530 他的粉丝 ,译者 姚琪琳 关注 0 他的粉丝 发布于 2013年12月26日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT