如何在一行中将数​​组属性设置为新的初始化数组

时间:2012-03-23 14:17:52

标签: .net vb.net arrays .net-2.0

我想设置一个数组类型的对象的属性。

如果我声明并初始化一个对象数组,我会这样做:

Dim x() as SomeObject = {obj1, obj2}

我似乎无法使用该属性做类似的事情,你能做到这一点,是否有人知道正确的语法?

myObj.ArrayProperty = {obj1, obj2}

我在第一个{

上得到表达式预期错误
Infer Off
Explicit On
Strict On

答案:

myObj.ArrayProperty = New objType() {obj1, obj2}

2 个答案:

答案 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() { ...。简化的语法仅适用于初始化器。