BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

VB 10中集合与数组的初始值设定项

| 作者 Jonathan Allen 关注 612 他的粉丝 ,译者 王波 关注 0 他的粉丝 发布于 2009年10月27日. 估计阅读时间: 3 分钟 | ArchSummit北京2018 共同探讨机器学习、信息安全、微服务治理的关键点

伴随.NET 4.0和Visual Studio 10的发布,Visual Basic 10添加了集合与数组初始值设定项的支持。这些功能与C#的非常类似,它仅是对扩展方法和类型引用作出了少许改进。

集合初始值设定项

和C#一样,Visual Basic的集合初始值设定项用在那些实现了IEnumerable接口并暴露Add方法的类。但与C#不同的是,Add方法可在扩展方法中进行定义。

  

var x As new List<String>() {"Item1", "Item2"}

Dim x As New List(Of String) From {"Item1", "Item2"}

给Add方法传入多个参数也和C#非常类似。

  

var x = new Dictionary<int, string>(){{1, "Item1"}, {2, "Item2"}}

Dim x As New Dictionary(Of Integer, String) From {{1, "Item1"}, {2, "Item2"}}

C#语法中会有轻微的歧义现象,这使得它可用把属性初始值设定项和对象初始值设定项联系起来。通过使用关键字With和From,有人可能会假定VB能克服这方面的限制,把两个初始值设定写在同一条语句中。不幸的是,情况并没那么简单,以下的句子就会出现语法问题:

Dim x as New List(Of Integer) With {.Capacity = 10} From {1,2,3}

另一个VB学习C#的方面是异常的处理方式。如果给特定集合添加任何项的时候抛出异常,整个操作都会中止而该集合变量的值也不会改变。

数组初始值设定项

数值初始值设定项现在可支持类型引用,这样大大减少了代码量。正如我们接下来看到的代码那样,花括号中的数组值就需要对数组进行是否创建和类型的推断。

  

Dim x = {1, 2, 3}

相比之下,VB早期的版本要求括号为空,用以表示数组。而且,在没有明确指定的情况下,会把该变量定义为对象数组。

  

Dim x As Integer() = {1, 2, 3} ‘integer array

Dim x() = {1, 2, 3} ‘object array

同时支持多维数组和交错数组,尽管后者的语法(每个数组的括号)显得有点笨拙。

  

Dim multi = {{1, 2}, {3, 4}}

Dim jagged()() = {({1, 2}), ({3, 4, 5})}

数组初始值设定项也可以在调用函数中内联使用。

查看英文原文:Collection and Array Initializers in VB 10

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT