2016-02-13 3 views
2

Я столкнулся с этим странным исключением IndexOutOfRangeException. Код я работаю с изначально был код C, мне удалось перевести его на C#IndexOutOfRangeException по некоторым странным причинам

Так Я, followin петля дает мне ошибку:

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

Почему вы думаете, что 'rxp [0] [i]' в C эквивалентно 'rxp [0]' в C#? – Amit

+0

Согласно функции C, которую он пытается преобразовать в C#, он не пытается создать массив массивов. Таким образом, дубликат метки неправильный. – sithereal

+0

Хорошо, если вы посмотрите на Jagged Arrays в MSDN, вы можете понять, почему я сделал это так. – Zoszko

ответ

0

Если вы пытаетесь создать 2-мерный массив, синтаксис должен быть double [,] rxp = new double[3,6];. Ниже приведена подробная документация Multidimensional Arrays на MSDN.

+0

Я думал, что должен использовать Jagged Arrays ... Это сделал трюк. – Zoszko

Смежные вопросы