【问题标题】:How to set an array property to a new initialised array in one line如何在一行中将数​​组属性设置为新的初始化数组
【发布时间】:2012-03-23 14:17:52
【问题描述】:

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

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

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

我似乎无法对属性做类似的事情,你能做到吗,有人知道正确的语法吗?

myObj.ArrayProperty = {obj1, obj2}

我在第一个 {

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

答案:

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

【问题讨论】:

标签: .net vb.net arrays .net-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

【讨论】:

  • 不在 VB.NET 中,这是一个 VB 问题。 blogs.lessthandot.com/index.php/DesktopDev/MSTech/…
  • 这不起作用。我试过 myObj.ArrayProperty = new objType() {obj1, obj2}
  • 我的立场是正确的,我不确定我之前做了什么,但你可以这样做。 myObj.ArrayProperty = New objType() {obj1, obj2}.. 谢谢!
【解决方案2】:

你可能正在寻找这个

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

【讨论】:

  • 对不起,这不是我要找的,正如您从示例中看到的那样,我知道如何执行上述操作。我想同时为数组和初始化设置一个属性。我已经在别处实例化了数组的对象。对于问题而言,类型并不重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多