我想设置一个数组类型的对象的属性。
如果我声明并初始化一个对象数组,我会这样做:
Dim x() as SomeObject = {obj1, obj2}
我似乎无法使用该属性做类似的事情,你能做到这一点,是否有人知道正确的语法?
myObj.ArrayProperty = {obj1, obj2}
我在第一个{
上得到表达式预期错误Infer Off
Explicit On
Strict On
答案:
myObj.ArrayProperty = New objType() {obj1, obj2}
答案 0 :(得分:1)
您需要新的关键字ex:
这项工作在visual studio 2010下,目标框架为2.0
Module Module1
Sub Main()
test = New String() {"a", "a"}
End Sub
Public Property test As String()
End Module
答案 1 :(得分:1)
可能你正在寻找这个
Dim x As SomeClass() = New SomeClass() { _
New SomeClass With {.ID = 1, .Name = "John"}, _
New SomeClass With {.ID = 2, .Name = "Sue"} _
}
您必须先创建数组,然后才能创建并添加对象。
说你的对象属于数组类型是误导性的。我更愿意说你有一些类型的数组。初始化数组时,您希望添加该类型的对象,同时初始化这些对象的属性。属性属于数组中的对象,而不属于数组本身。
将数组括号放在变量后面的VB方式令人困惑。 VB允许在某些情况下将数组括号放在类型后面,这对我来说似乎更合乎逻辑。
更新:
属性(与变量不同)没有初始值设定项;但是你可以初始化支持变量。
Private _myArrayProperty As SomeClass() = New SomeClass() { _
New SomeClass With {.ID = 1, .Name = "John"}, _
New SomeClass With {.ID = 2, .Name = "Sue"} _
}
Public Property MyArrayProperty() As SomeClass()
Get
Return _myArrayProperty
End Get
Set(ByVal value As SomeClass())
_myArrayProperty = value
End Set
End Property
如果您想稍后为该属性分配一个新数组,可以这样做
obj.MyArrayProperty = New SomeClass() { _
New SomeClass With {.ID = 1, .Name = "John"}, _
New SomeClass With {.ID = 2, .Name = "Sue"} _
}
您可以将New SomeClass()
放入变量初始值设定项中;但是,在其他表达式中,您必须明确指定New SomeClass() { ...
。简化的语法仅适用于初始化器。