Как Мэтт предлагает , эта ошибка:
Ошибка компиляции: невозможно присвоить массиву
связано с тем, что вы пытались присвоить возвращаемое значение Foo()
массиву fixed , а не динамическому массиву. Вам просто нужно указать компилятору, что объявленная вами переменная является массивом, а не фактическим размером массива. Он вычислит размер на основе размера возвращаемого массива.
Кроме того, вы всегда должны указывать тип возвращаемого значения для ваших функций. Вы делаете это в VB, помещая предложение As Type
в конце объявления функции. В этом случае вам нужен массив значений типа double, записанный как Double()
.
Итак, перепишите ваш код, чтобы он выглядел следующим образом, включив оба эти изменения:
Function Foo() As Double() ' note the specification of a return value
Dim bar(1 To 2) As Double
bar(1) = 1
bar(2) = 2
Foo = bar
End Function
Private Sub Command1_Click()
Dim arrayx() As Double ' note the declaration of a DYNAMIC array
arrayx = Foo()
MsgBox arrayx(1)
End Sub
Этот код отображает окно сообщения со значением «1», как и ожидалось.