数组参数必须是 ByRef
Array argument must be ByRef
我做错了什么?
Sub Main()
Dim patients() As String
' Some code to populate the patients array, works fine
CalculateScores (patients) ' Array argument must be ByRef compile error
End Sub
Sub CalculateScores(patients As String)
End Sub
如果我将 patients 更改为 Main 中的变体数组和 CalculateScores 的参数,它工作正常,但我看不到无法传递字符串的逻辑。默认情况下它是 ByRef 所以我知道我遗漏了一些东西。
我当然可以使用变体,但感觉很老套。
当你这样做时:
DoSomething (expression)
您强制 expression
被评估为 作为一个值 ,并传递 ByVal
, 无论参数是否显式表示已通过 ByRef。虽然这在大多数情况下或多或少没有影响,但当您尝试传递数组或对象引用时,它会在后端咬住您。
去掉括号。
DoSomething expression
现在,您的代码还有其他问题:您将字符串数组传递给 String
参数;那行不通。将参数设为数组或 Variant
,为了清楚起见,我建议将参数明确标记为 ByRef
。
我做错了什么?
Sub Main()
Dim patients() As String
' Some code to populate the patients array, works fine
CalculateScores (patients) ' Array argument must be ByRef compile error
End Sub
Sub CalculateScores(patients As String)
End Sub
如果我将 patients 更改为 Main 中的变体数组和 CalculateScores 的参数,它工作正常,但我看不到无法传递字符串的逻辑。默认情况下它是 ByRef 所以我知道我遗漏了一些东西。
我当然可以使用变体,但感觉很老套。
当你这样做时:
DoSomething (expression)
您强制 expression
被评估为 作为一个值 ,并传递 ByVal
, 无论参数是否显式表示已通过 ByRef。虽然这在大多数情况下或多或少没有影响,但当您尝试传递数组或对象引用时,它会在后端咬住您。
去掉括号。
DoSomething expression
现在,您的代码还有其他问题:您将字符串数组传递给 String
参数;那行不通。将参数设为数组或 Variant
,为了清楚起见,我建议将参数明确标记为 ByRef
。