2016-02-13 86 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

相關問題