Dim product = New With {Key .Name = "paperclips", Key .Price = 1.29, .OnHand = 24}
类定义包含的属性定义类似于下面的内容。请注意,键属性没有 Set 方法。键属性的值是只读的。等同于:
Public Class $Anonymous1
Private _name As String
Private _price As Double
Private _onHand As Integer
Public Property Name() As String
Get
Return _name
End Get
End Property
Public Property Price() As Double
Get
Return _price
End Get
End Property
Public Property OnHand() As Integer
Get
Return _onHand
End Get
Set(ByVal Value As Integer)
_onHand = Value
End Set
End Property
End Class
如果匿名类型声明至少包含一个键属性,则类型定义将重写三个从 Object 继承的成员。Equals、GetHashCode 和 ToString。如果未声明任何键属性,则仅重写 ToString。重写的成员提供以下功能:
如果两个匿名类型实例是同一实例,则 Equals 返回 True;否则,如果它们满足下面的条件:
-
它们具有相同个数的属性。
-
属性以相同顺序声明,具有相同的名称和相同的推断类型。名称比较不区分大小写。
-
至少有一个属性是键属性,并且 Key 关键字应用于相同的属性。
-
如果比较每个相对应的键属性对,则会返回 True。