IndexOutOfRangeException出于一些奇怪的原因
问题描述:
我遇到了这个奇怪的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;
}
}
答
如果你想创建一个2维数组,语法应为double [,] rxp = new double[3,6];
。以下是MSDN上Multidimensional Arrays的详细文档。
+0
我以为我应该使用Jagged Arrays ...这个伎俩。 – Zoszko
你为什么会认为C中的'rxp [0] [i]'等同于C#中的'rxp [0]'? – Amit
根据他试图转换为C#的C函数,他不想创建一个数组数组。所以,重复标记是错误的。 – sithereal
好吧,如果你看看在MSDN的Jagged Arrays,你可以看到为什么我这样做。 – Zoszko