C# 将二维数组参数从VB6传递到COM dll中的func,而不是从C传递

C# 将二维数组参数从VB6传递到COM dll中的func,而不是从C传递,c#,multidimensional-array,parameters,com,vb6,C#,Multidimensional Array,Parameters,Com,Vb6,我有一个第三方数字COM dll,可以进行线性回归。 下面是遗留的VB6代码如何调用它并很好地工作 Dim Y() As Variant, X() As Variant ReDim Y(1 To rs.RecordCount), X(1 To rs.RecordCount, 1 To 2) ' fill Y and X with some data Coeff = MathLib.LinearRegression(Y, X) 但我在C打电话时遇到了一些问题 在C中,当X是一维时,它起作用: i

我有一个第三方数字COM dll,可以进行线性回归。 下面是遗留的VB6代码如何调用它并很好地工作

Dim Y() As Variant, X() As Variant
ReDim Y(1 To rs.RecordCount), X(1 To rs.RecordCount, 1 To 2)
' fill Y and X with some data
Coeff = MathLib.LinearRegression(Y, X)
但我在C打电话时遇到了一些问题

在C中,当X是一维时,它起作用:

int[] x0 = new int[] { 3, 4, 5, 6 };
int[] y0 = new int[] { 10, 11, 12, 13 };
object z0 = MathLib.LinearRegression(y0, x0);
这是C代码,其中x0是2维的,我得到了异常维错误

int[,] x0 = new int[,] {{2,4},{6,8},{1,3},{5,7},};
int[] y0 = new int[] { 10, 11, 12, 13 };
object z0 = MathLib.LinearRegression(y0, x0);
这是C代码,其中x0是数组的数组,我得到了异常,指定的数组不是预期的类型

int[][] x0 = new int[][] {
    new int[]{2,4},
    new int[]{6,8},
    new int[]{1,3},
    new int[]{5,7},
};
int[] y0 = new int[] { 10, 11, 12, 13 };
object z0 = MathLib.LinearRegression(y0, x0);

我遗漏了什么?

根据DLL的编写方式,您可能会被迫创建一个。如果您将1更改为2,将0更改为1,VB6代码是否有效?这是一个问题,对于另一个问题,变量数组是C中的对象[]或对象[],。@GSerg,是的,忘了提到,当我将基于1的索引更改为基于0的索引时,VB6代码有效。thx.@HansPassant,对象[,]似乎可以工作,返回的回归系数都为空,但至少异常消失了。剩下的我会弄清楚的。非常感谢。