写点什么

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:42421
用户头像

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

关注

评论

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

Zebec节点Zepoch销量接近800个,生态发展信心十足

西柚子

华为云 CDN ,做企业网络“快人一步”的幕后英雄!

IT科技苏辞

华为云CDN,带你畅享更快速的上网体验!

IT科技苏辞

Kafka 消费者之 findCoordinator源码解析

石臻臻的杂货铺

kafka 11月月更

Discourse 为什不建议使用 Gmail 的 SMTP

HoneyMoose

Zebec节点Zepoch销量接近800个,生态发展信心十足

BlockChain先知

GO学习之路-4.String和Slice,Map

子不语Any

Go 编程语言 11月月更

企业如何高质量上云?华为云服务器告诉你!

路过的憨憨

华为

GO学习之路-2.GO开发环境搭建

子不语Any

Go 编程语言 11月月更

华为云CDN,为你开启更快速的上网体验!

秃头也爱科技

「Go易错集锦」释放有限的资源以避免泄露

Go学堂

golang 程序员 个人成长 defer 11月月更

hashmap 的重新散列和装载因子

HoneyMoose

弹性伸缩、安全高效!华为云服务器助力企业数字化转型!

路过的憨憨

华为

会议都在云上开,华为云会议具有超高性价比

清欢科技

企业会议还能这样举行?华为云会议的高端云体验

爱尚科技

云上办公便捷、安全,就用华为云桌面!

IT科技苏辞

php常用函数

J.Smile

php

华为云企业应用上云解决方案,为企业排忧解难

清欢科技

GO学习之路-6.GO语言函数

子不语Any

Go 编程语言 11月月更

华为云云服务器:赢麻了是种什么体验?

路过的憨憨

华为

华为云会议深入行业,让沟通零距离

爱尚科技

2022-11-30:小红拿到了一个仅由r、e、d组成的字符串 她定义一个字符e为“好e“ : 当且仅当这个e字符和r、d相邻 例如“reeder“只有一个“好e“,前两个e都不是“好e“,只有第三个

福大大架构师每日一题

算法 rust 福大大

GO学习之路-5.方法与接口

子不语Any

Go 编程语言 11月月更

简单快捷又实用,SmartRooms智能会议室全都能满足

爱尚科技

GO学习之路-3.GO基础语法

子不语Any

Go 编程语言 11月月更

2022腾讯全球数字生态大会数据库SaaS专场召开 腾讯云数据库SaaS产品全面升级

腾讯云数据库

腾讯云 SaaS 腾讯云数据库

企业上云原来如此简单,华为云带你体验云上风采

清欢科技

企业运维强驱动

秃头也爱科技

华为云会议,助您轻松实现远程智能办公

科技怪授

@企业主们看过来,用华为云CDN给你的网页加个速

IT科技苏辞

设计模式之美--MVC(1)的贫血模型、充血模型

GalaxyCreater

设计模式

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