Data+AI时代,如何打造下一代数智平台? 了解详情
写点什么

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

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

关注

评论

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

SpringAI版本更新:向量数据库不可用的解决方案!

王磊

项目管理工具:Jira vs Leangoo

axe

Jira 项目管理工具 办公软件 leangoo

CloudWeGo + APMPlus:打造从开发到可观测的一站式体验

火山引擎开发者社区

分布式架构 火山引擎

聊聊软件生命周期中的度量指标(附《软件研发效能度量规范》下载)

思码逸研发效能

研发管理 研发效能 效能管理 思码逸 研发指标

CAD提示无法更新实体填充

极客天地

内网局域网部署的聊天软件BeeWorks优势分析

BeeWorks

Prometheus 性能调优:大模型和智能驾驶可观测的高基数问题

火山引擎开发者社区

AI 火山引擎

如何选择分析型数据库?企业级选型指南与 2025 趋势解读

镜舟科技

云原生 OLAP BI 分析型数据库 StarRocks

有没有适合企业用的局域网即时通讯聊天工具?

BeeWorks

Zookeeper 可观测性最佳实践

观测云

「摩根士丹利」最新人形机器人研报:头部人形机器人公司梳理和趋势分析(附报告)

机器人头条

科技 大模型 人形机器人 具身智能

工业数据治理范式革新:TDengine虚拟表技术解析

TDengine

数据库 tdengine 时序数据库

CAD测量三维实体表面积方法

极客天地

为什么企业要用私有化部署的Im即时通讯软件?

BeeWorks

手把手教你安装部署金仓数据库 KingbaseES

金仓技术

数据库· KingbaseES 金仓数据库

CAD图纸中插入图块的详细步骤与技巧

在路上

cad cad看图 CAD看图王

基于 Trae 的单细胞 RNA 测序分析与可视化

火山引擎开发者社区

火山引擎 RNA

CAD背景遮罩使用方法

极客天地

从繁忙到真正高效:为何资源效率正在扼杀你的产出

ShineScrum

敏捷

BeeWorks Meet:私有化部署的视频会议利器,安全高效助力企业协作

BeeWorks

金仓数据库KingbaseES安装指南(Linux环境)

金仓技术

数据库· KingbaseES 金仓数据库

第87期 | GPTSecurity周报

云起无垠

用户行为分析正在被保险行业广泛采纳-ClkLog埋点分析系统

ClkLog

开源 数据分析 画像 埋点分析

iVX:引领图形化编程与 AI 融合的开发革命

代码制造者

无代码开发

如何通过KStudio连接金仓数据库KingbaseES

金仓技术

KingbaseES 金仓数据库

新客户 | 美妆智造全面升级:毫秒级查询 + 极致压缩

TDengine

数据库 tdengine 时序数据库

上海人工智能实验室OpenDataLab&和鲸举办大模型赋能科研分享会

ModelWhale

大模型 科研 经济管理 minerU

从关键词到流量闭环,AI 自动 SEO 如何一步到位?

极客天地

MCP 正当时:FunctionAI MCP 开发平台来了!

阿里巴巴云原生

阿里云 云原生 MCP

不到一首歌的时间,AppStudio助你快速搭建 AI 智能体应用!

商汤万象开发者

人工智能 AI

《Operating System Concepts》阅读笔记:p700-p732

codists

操作系统

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