写点什么

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

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

关注

评论

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

血亏60%库存?你的"AI"可能正在吞噬零售利润

第七在线

人工智能丨Manus现象:一场AI流量的狂欢,还是一场生产力革命?

测试人

人工智能

全球汽车轻量化巅峰对决!Altair Enlighten Award 征集启动,谁将引领绿色出行新时代?

Altair RapidMiner

汽车 仿真 产品的可持续发展 altair hyperworks

扣子实践 | 汽车线上营销助手:功能实现与效果分析

火山引擎开发者社区

WebGL开发VR软件的测试

北京木奇移动技术有限公司

VR开发 软件外包公司 webgl开发

区块链加密技术公司DApp开发指南:从零开始到上线

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

下一代代币技术白皮书:合规化智能合约与零知识证明隐私协议

区块链软件开发推广运营

交易所开发 公链开发 代币开发

WebGL开发VR软件的技术难点

北京木奇移动技术有限公司

VR开发 软件外包公司 webgl开发

什么是大数据风控

易成研发中心

功能更新|虚拟项目——效能度量中的数据胶水

思码逸研发效能

研发效能 研发效能度量 研发效能管理 研发效能度量研发效能管理

vue2和vue3的响应式原理有何不同?

威哥爱编程

JavaScript html js Vue3 vue2

抢占红海市场,从云等保做起

黑龙江陆陆信息测评部

如何在手机上绘制CAD虚线?

在路上

cad cad看图 CAD看图王

字节跳动冯佳时:大语言模型在计算机视觉领域的应用、问题和我们的解法

火山引擎开发者社区

2025交易所开发突围:AI增强型撮合引擎与零知识证明跨链架构

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

Cisco ASAv 9.23.1 - 思科自适应安全虚拟设备 (ASAv)

sysin

ASAv

人工智能丨AI质量攻坚战:2025年测试工程师的生存法则

测试人

人工智能

Trae 开发工具与使用技巧

威哥爱编程

编程工具 AI编程 AI工具 Trae

企业要如何做好内容风控管理

易成研发中心

Cisco Nexus 9000v Switch, NX-OS Release 10.4(5)M - 虚拟化数据中心交换机

sysin

nexus

人工智能助力家庭机器人:从清洁到陪伴的智能转型

天津汇柏科技有限公司

人工智能 机器人

WebGL开发VR软件的注意事项

北京木奇移动技术有限公司

VR开发 软件外包公司 webgl开发

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(6)

HarmonyOS SDK

【Redis技术进阶之路】「原理分析系列开篇」揭秘分析客户端和服务端网络通信交互实现(客户端篇)

码界西柚

redis 底层原理 网络通信

边缘云原生操作系统的设计与思考

火山引擎开发者社区

满满干货,选手必读!4C大赛大数据主题赛国赛一等奖选手参赛经验分享完整实录已整理!

ModelWhale

人工智能 大数据 计算机 比赛 中国大学生计算机设计大赛

Cisco ACI Simulator 6.0(9c)M - ACI 模拟器

sysin

ACI

Cisco Secure Firewall Management Center 7.7.0 - 思科防火墙管理中心

sysin

FMC

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