写点什么

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

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

关注

评论

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

Strands Agents SDK 助力翰德 Hudson 实现智能招聘新突破

亚马逊云科技 (Amazon Web Services)

黑龙江等保测评公司选择关键维度:服务能力与适配性

等保测评

AI GEO领域发展机遇大

跑一跑

geoai

猜灯谜赢大奖系统介绍

微擎应用市场

YashanDB支持的数据库监控工具及实现方法

数据库砖家

YashanDB支持的数据模型类型及应用场景

数据库砖家

BongoCat - 可爱的桌面互动猫咪

qife122

Vue3 桌面宠物 交互式应用

【西京学院主办】第九届电气、机械与计算机工程国际学术会议(ICEMCE 2025)

搞科研的小刘

学术会议 国际会议

零售业将在 2025 年引领 RFID 革命

斯科信息

斯科信息 RFID技术 RFID门禁系统 RFID收银设备

YashanDB支持的数据库加密技术详解

数据库砖家

YashanDB支持的数据库事务类型及应用分析

数据库砖家

从条形码到智能跟踪:物联网和RFID如何共同发展

斯科信息

RFID标签

黑龙江等保测评公司选择进阶考量:口碑与可持续合作

等保测评

第三届人工智能与自动化控制国际学术会议(AIAC 2025)

搞科研的小刘

人工智能 自动化 学术会议

大数据-93 SparkSQL 全面解析:SQL + 分布式计算的完美结合

武子康

Java 大数据 flink spark 分布式

什么是子域名劫持?子域名劫持如何防御?

防火墙后吃泡面

哈尔滨二级等保办理全流程:从准备到完成的清晰指引

等保测评

区块链U卡APP的的开发过程

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

区块链开发 软件外包公司 web3开发

把Nano Banana设计图送进工厂车间,造好物用了三步

脑极体

AI

如何在 Unity3D 中实现无缝滚动动画?

北桥苏

政务预约系统介绍

微擎应用市场

YashanDB支持的用户权限管理与安全策略

数据库砖家

YashanDB智能分片技术介绍与应用指南

数据库砖家

为时序数据库 IoTDB 底层架构“保驾护航”,来听听新晋 Committer 的贡献心路!

Apache IoTDB

CST软件如何确定Floquet模数和背景距离

思茂信息

cst cst仿真软件 CST软件 CST Studio Suite

KaiwuDB X 智慧船舶:一库多赢,破解船舶系统数据高并发难题

KaiwuDB

数据库

限行提醒小程序介绍

微擎应用市场

定档!对话式 AI 和 Voice Agent Builder 的年度春晚,来 Convo AI & RTE2025 一探究竟

RTE开发者社区

YashanDB支持的数据加密传输技术剖析

数据库砖家

ElevenLabs 估值翻倍至 66 亿美元;B 站开源 IndexTTS2;通义推出 Qwen3-ASR-Flash丨日报

RTE开发者社区

喜报!白鲸开源 CEO 荣登「2025 中国数智化转型升级先锋人物」榜

白鲸开源

大数据 科技 DataOps 白鲸开源

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