写点什么

Visual Basic 10:持续改进中

  • 2008-11-09
  • 本文字数:1087 字

    阅读完需:约 4 分钟

像 C# 4 一样,VB 10 并没有加入过多革命性的特性。到目前为止,所有的特性都是可用的,仅仅是使用起来不太方便。

最值得期待的特性可能就是消除续行符了。虽然存在一些二义情况,但大多数情况下还是不需要使用下划线的。

接下来就是隐式的数组初始化了。VB 9 增加了数组初始化;但不幸的是其语法太冗长了。即使使用类型推断,还是需要多余的类型信息。

复制代码
Dim vectorA As Integer() = New Integer() {1, 2, 3, 4, 5}
Dim vectorB = New Integer() {1, 2, 3, 4, 5}

Visual Basic 10 为数组初始化增加了类型推断。

复制代码
Dim vectorC = {1, 2, 3, 4, 5

这种语法是通过判断与每个参数最接近的类型来实现的。如果是 System.Object,编译器就会发出一个警告。除了向量以外,该语法还支持矩阵和不规则数组。

复制代码
Dim matrix = {{1, 2, 3}, {4, 5, 6}}
Dim jagged = { ({1,2,3}), ({4,5}), ({6})}

集合也可以使用该特性进行初始化。通过使用 From 关键字,初始化列表中的每个条目都会被加到新创建的对象中。

复制代码
Dim list As New List(Of Integer) From {1,2,3,4}
Dim dictionary As New Dictionary(Of String, Integer) From {{ "Tom",80},{ "Frank",85}}

只要集合拥有一个名为 Add 的方法,该方法就可以通过最右边的参数(任意数量的参数)完成初始化。如果不存在这个方法,我么可以扩展方法的形式将其加入。

复制代码
Dim customers As New List(Of Customer) From {
{"Tom", "T", "Jones"},
{"Frank", "M", "Burns"}}
<Extension()> Sub Add( ByVal list As List(Of Customer),
ByVal firstName As String,
ByVal middleInitial As String,
ByVal lastName As String)
list.Add(New Customer(firstName, middleInitial, lastName))
End Sub

VB 10 还会对函数与子过程支持单行与多行 lambda。多行代理的语法列举如下:

复制代码
listA.ForEach(Sub(id)
Dim c = GetCustomer(id)
If c.UnpaidBill > 0 Then c.Send(Invoice)
End Sub)

通过使用现有的语法加入了自动属性。因为它看起来很像公有成员变量的语法,所以并不建议使用后者。一个可选的初始化列举如下:

复制代码
Public Property Score As Integer = 5

C#并不是唯一一个支持可选参数的语言。VB 已经支持该特性了,同时还有一个其支持的说明。特别地,定义为 Nullable(Of T) 的任何类型都不允许是可选的。VB 10 将解决该问题,最后它还支持将存储过程调用一对一的映射到 VB 包装函数上。

最后就是对协变和逆变的支持了。我们在文章:聚焦C#特性——协变和逆变中谈到了该特性。

查看英文原文: Visual Basic 10: Rounding the Edges

2008-11-09 20:42561
用户头像

发布了 88 篇内容, 共 273.7 次阅读, 收获喜欢 9 次。

关注

评论

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

Android的特殊攻击面(三)——隐蔽的call函数

OPPO安全

android 安全攻防 安全 函数

区块链技术创新应用势在必行 食品药品开启全链条溯源时代

CECBC

区块链 溯源 药品

隐秘的MySQL类型转换

架构精进之路

MySQL

为什么阿里巴巴的程序员成长速度这么快,看完他们的内部资料我明白了

Java迁哥

大数据应用

GalaxyCreater

大数据

第 0 期架构师训练营第 7 周作业 1

fujin

大数据总结

周冬辉

大数据

week12

强哥

极客大学架构师训练营

第十二周总结

Linuxer

大数据简介&架构(一)

dony.zhang

大数据 hdfs hive YARN MAPRED

架构师训练营第十二周总结

R20114

大数据作用

纯纯

非传统的“易观”,和他的技术驱动之路

易观大数据

Android 中的特殊攻击面(一)——邪恶的对话框

OPPO安全

android 安全攻防 安全

后疫情时代 数字经济如何大显身手

CECBC

疫情 数字经济 数字技术

打开 政务上链 应用场景

CECBC

区块链 数字身份 政务

week12 总结

雪涛公子

week12 作业

雪涛公子

【架构师训练营】第 12 周作业

花生无翼

阿里巴巴Java开发手册-日志规约

魏杰

第十二周作业

赵龙

第十二周学习总结

赵龙

大数据

GalaxyCreater

大数据

如何判断程序员的代码是否优美?

Garfield

代码质量 代码 代码优化 代码重构

释放数据价值:DAYU数据运营新能力解读

华为云开发者联盟

大数据 数字化转型 华为云 代码原理 数据运营

前端源码宝库

InfoQ_34a83d636158

SpreadJS 纯前端表格控件应用案例:Teammark知识管理库

葡萄城技术团队

SpreadJS

Android中的特殊攻击面(二)——危险的deeplink

OPPO安全

android 安全攻防 安全

超声大数据应用

周冬辉

大数据

架构师课程第十二周总结

dongge

第 0 期架构师训练营第 7 周作业 2 ----总结

fujin

Visual Basic 10:持续改进中_.NET_Jonathan Allen_InfoQ精选文章