VB.NET中是否有特殊的声明类声明

时间:2015-03-17 03:57:03

标签: vb.net class

我是VB.NET的新手。当我在MSDN上阅读文档(https://msdn.microsoft.com/en-us/library/vstudio/bb534304%28v=vs.100%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1)时,我看到以下代码(摘录):

Dim pets As New List(Of Pet)(New Pet() _
                             {New Pet With {.Name = "Barley", .Age = 8}, _
                              New Pet With {.Name = "Boots", .Age = 4}, _
                              New Pet With {.Name = "Whiskers", .Age = 1}, _
                              New Pet With {.Name = "Daisy", .Age = 4}})

我之前没有看到Pet类的定义。任何人都可以向我解释一下吗?

1 个答案:

答案 0 :(得分:1)

这很令人困惑,因为VB.Net在这种情况下重新使用了一些令牌来表示不同的东西。我会将代码分散到几行并解释每一点会发生什么。


Dim pets As New List(Of Pet)

创建一个将保存Pet对象的列表对象。

(

我们正在调用List(Of Pet)类型的构造函数。 List(Of T)构造函数有几个重载,但这里的代码使用this one

New Pet() 

这是棘手的地方。此代码创建新的Pet对象。在此上下文中,()标记表示这将是一个数组。

_  

只是将代码移到下一行

{

现在表明我们处于Collection Initializer,用于立即使用项目填充新的数组/列表/等。

New Pet

这次我们正在创建一个新的Pet对象。

 With {

这表明我们正在使用Object Initializer。这里值得一提的是,编译器对于作为数组的New Pet()和作为对象的New Pet()之间的差异的唯一提示是使用初始化器,并且两者之间的唯一区别是初始化程序是With关键字。如果你不习惯它,它可能会使VB中的代码混乱,这会让你感到困惑。

.Name = "Barley", .Age = 8}

为新对象的属性指定一些值,并完成对象初始值设定项。

, _

移动到集合初始值设定项中的下一个项目,然后继续另一行。

New Pet With {.Name = "Boots", .Age = 4}, _
New Pet With {.Name = "Whiskers", .Age = 1}, _
New Pet With {.Name = "Daisy", .Age = 4}

与前面的代码一样,这会创建三个新的Pet对象,并为其某些属性设置值。请注意,在最后一个条目之后没有逗号(,)。

}) 

现在我们关闭集合初始值设定项,并完成对List构造函数的调用。