初始化匿名对象数组的语法

时间:2016-05-19 13:33:08

标签: vb.net syntax initializer

你可以initialize an anonymous object这样:

Dim cust = New With {.Name = "Hugo", .Age = 23}

你可以initialize a collection这样:

Dim numbers = {1, 2, 3, 4, 5}
Dim names As New List(Of String) From {"Christa", "Brian", "Tim"}

但是,您是否可以使用语法支持

初始化一个匿名对象数组

你可以这样做,但custs只是一个普通的object

Dim custs = { New With {.Name = "Hugo", .Age = 23}, New With {.Name = "Boss", .Age = 32} }

你可以这样做,但custs中的每个项目都只是普通object

Dim custs As New List(Of Object) From { New With {.Name = "Hugo", .Age = 23}, New With {.Name = "Boss", .Age = 32} }

如何初始化列表/集合/数组,以便我可以访问集合的全部功能以及内部匿名对象类型的属性

1 个答案:

答案 0 :(得分:0)

问题在于推断打字的选项已关闭。这可以通过一个更简单的例子来说明,其中初始化一个对象而不首先声明它的类型导致一个简单,无聊的对象。

= vs. As assignment

要解决此问题,您可以使用选项语句

打开Inferred Typing
Option Infer On

现在我们的简单日期示例应该有效:

Dim x = New DateTime

最后,请确保编译代码一次,因为匿名对象实际上是在幕后实现为隐藏类。

enter image description here