C# SafeArray无法封送到此数组类型,因为它具有非零下界或多个维度

C# SafeArray无法封送到此数组类型,因为它具有非零下界或多个维度,c#,vb6,dynamic-arrays,C#,Vb6,Dynamic Arrays,SafeArray无法封送到此数组类型,因为它具有非零下界或多个维度 要调用的VB6代码段将动态数组作为ref参数 Public Function DoEvaluation(**ByRef dynamicArr()** As Currency, Optional ByVal acm As Currency, Optional ByVal ytd As Currency, Optional lspsAs Long = 1) As Boolean 我的C#代码片段,用于调用上述Vb6代码 de

SafeArray无法封送到此数组类型,因为它具有非零下界或多个维度

要调用的VB6代码段将动态数组作为ref参数

Public Function DoEvaluation(**ByRef dynamicArr()** As Currency, Optional ByVal 
acm As Currency, Optional ByVal ytd As Currency, Optional 
lspsAs Long = 1) As Boolean
我的C#代码片段,用于调用上述Vb6代码

decimal[] **dynamicAmt** = new decimal[11];
ok = Helper.DoEvaluation(ref **dynamicAmt** , acm, ytd, ref nps);
我发现异常“无法将SafeArray封送到此数组类型,因为它具有非零下界或多个维度。”


请帮助如何在Vb6中将动态数组声明为ref参数的情况下从C#调用Vb6代码。

您的Vb6代码是否分配给
dynamicArr
一个具有非零下限的数组?是的,我们正在调整大小并为其分配值,将cPAmt(1到mlNOP)作为currency重新输入您认为
“无法将SafeArray封送到此数组类型,因为它具有非零下限或多个维度。“
是什么意思?请记住,您使用的是非零下限。在Vb6中,我们可以定义无长度的数组,但在C中,它必须有一定的大小。不完全是,我更可能是C的家伙,只是试图从C中调用Vb6代码。有没有办法从c#调用此VB6代码而不在VB6代码中修改它。