3

我有一个类可以处理几个数字数组(双精度类型),还需要处理一个描述符数组,其中包括字符串和整数的混合,需要相应地用作字符串和数字。所以我决定创建一个变体类型的数组属性(不是包含数组的变体)。但是这个似乎不起作用,而类型 double 数组则起作用。

具体来说,这种类型的双数组属性工作正常,一次接收或返回一个数组:

Private p_dbNumericArray() As Double

Public Property Let NumericArray(Value() As Double)
    p_dbNumericArray() = Value()
End Property
Public Property Get NumericArray() As Double()
    NumericArray() = p_dbNumericArray()
End Property

但是,当我使用变体类型的数组尝试相同的模式时,Get 属性返回一个空/未分配的变体数组:

Private p_vaVariantArray() As Variant

Public Property Let VariantArray(Value() As Variant)
    p_vaVariantArray() = Value()
End Property
Public Property Get VariantArray() As Variant()
    VariantArray() = p_vaVariantArray()
End Property

将数组包装在变体中(而不是具有变体类型的数组),当然可以正常工作:

Private p_vaVariantArray As Variant

Public Property Let VariantArray(Value As Variant)
    p_vaVariantArray = Value
End Property
Public Property Get VariantArray() As Variant
    VariantArray = p_vaVariantArray
End Property

但是,在属性中,适用于 Dim D() As Double 的模式不适用于 Dim V() As Variant 的已知和标准吗?

4

1 回答 1

2
Public Property Get VariantArray() As Variant()
    VariantArray = p_vaVariantArray()
End Property

注意缺少的括号。

于 2011-03-17T17:22:56.793 回答