2016-02-13 45 views
2

我遇到了这个奇怪的IndexOutOfRangeException异常。我有工作的代码原本是C代码,我设法把它翻译成C#IndexOutOfRangeException出于一些奇怪的原因

所以我在跟随着循环给我的错误:

for (int i = 0; i < 6; i++) 
{ 
    L[0] = new double[]{ T[0] + rxp[0][i] - (p[0][i]) 
} 

按照“当地人”选项卡,RXP只有3个“儿童”只有1件/小孩。 所以我想这个问题是在这里:

void getrxp() 
{ 
    for (int i = 0; i < 6; i++) 
    { 
     rxp[0] = new double[]{ M[0][0] * (re[0][i]) + M[0][1] * (re[1][i]) + M[0][2] * 0}; 
     rxp[1] = new double[]{ M[1][0] * (re[0][i]) + M[1][1] * (re[1][i]) + M[1][2] * 0}; 
     rxp[2] = new double[]{ M[2][0] * (re[0][i]) + M[2][1] * (re[1][i]) + M[2][2] * 0}; 
    } 
} 

我收到这创造double rxp[3][6];阵列错误或有别的东西?

原始代码看起来像这样(C):

void getrxp() 
{ 
    for(int i=0;i<6;i++){ 
    rxp[0][i] = M[0][0]*(re[0][i])+M[0][1]*(re[1][i])+M[0][2]*0; 
    rxp[1][i] = M[1][0]*(re[0][i])+M[1][1]*(re[1][i])+M[1][2]*0; 
    rxp[2][i] = M[2][0]*(re[0][i])+M[2][1]*(re[1][i])+M[2][2]*0; 
    } 
} 
+1

你为什么会认为C中的'rxp [0] [i]'等同于C#中的'rxp [0]'? – Amit

+0

根据他试图转换为C#的C函数,他不想创建一个数组数组。所以,重复标记是错误的。 – sithereal

+0

好吧,如果你看看在MSDN的Jagged Arrays,你可以看到为什么我这样做。 – Zoszko

回答

0

如果你想创建一个2维数组,语法应为double [,] rxp = new double[3,6];。以下是MSDN上Multidimensional Arrays的详细文档。

+0

我以为我应该使用Jagged Arrays ...这个伎俩。 – Zoszko

相关问题