在VB6中初始化UDT数组

在VB6中初始化UDT数组,vb6,initialization,user-defined-types,Vb6,Initialization,User Defined Types,我已经声明了一个UDT,我需要用UDT的特定记录初始化一个数组,我将如何在模块级别执行该操作 这是我试过的 Public Type MyType id As Integer name As String values As Double End Type private MY_TYPES(1) As MyType My_TYPES(0) = newMyType(1, "Item 1", 15.9) My_TYPES(1) = newMyType(2, "It

我已经声明了一个UDT,我需要用UDT的特定记录初始化一个数组,我将如何在模块级别执行该操作

这是我试过的

Public Type MyType
    id     As Integer
    name   As String
    values As Double
End Type

private MY_TYPES(1) As MyType
My_TYPES(0) = newMyType(1, "Item 1", 15.9)
My_TYPES(1) = newMyType(2, "Item 2", 30.2)

Private Function newMyType(byval id as Integer, byval name as String, _ 
                           byval v as Double) As MyType
    Dim t As MyType
    t.id = id
    t.name = name
    t.value = v
    newMyType = t
End Function
我得到的错误是
外部过程无效

正如您所看到的,我试图重现java
集合的静态初始化,比如
列表
集合


我想将集合公开为常量,如何实现这一点?

您必须将以下两行放在sub中,然后调用sub以初始化udt

My_TYPES(0) = newMyType(1, "Item 1", 15.9)
My_TYPES(1) = newMyType(2, "Item 2", 30.2)

或者,您可以将这两行放在if内的工作子模块中。然后,使用模块级初始化布尔值,您必须将以下两行放在子模块中,然后调用子模块初始化udt

My_TYPES(0) = newMyType(1, "Item 1", 15.9)
My_TYPES(1) = newMyType(2, "Item 2", 30.2)

或者,您可以将这两行放在if.内部的工作子模块中,然后使用模块级别的init boolean

将分配给My_TYPES数组的两行写入过程之外。它们必须位于函数/子/属性(如newMyType函数)内。分配给My_TYPES数组的两行不能在过程外写入。它们必须位于函数/子函数/属性(如newMyType函数)内。+1。如果您的模块是一个类,您可以将这些行放入类_initialize中,以便它们自动运行。如果在BAS模块+1中,您需要自己管理初始化。如果您的模块是一个类,您可以将这些行放入类_initialize中,以便它们自动运行。如果在BAS模块中,您需要自己管理初始化