VB的未来计划

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

你可能感兴趣的:(VB的未来计划)