2013-02-11 2 views
4

Я просто пытаюсь исправить исходный код. Этот исходный код имеет следующую строку:C# Filling double [] [] вручную

double[][] inputs = sourceMatrix.Submatrix(null, 0, 1).ToArray(); 

Первоначально эти «входы» заполняются с использованием матрицы, но я все еще слишком неопытен, чтобы использовать эту матрицу. Сначала я хотел бы протестировать его с помощью некоторых кодированных вручную значений.

Не могли бы вы рассказать мне, как заполнить double [] [] с некоторыми значениями?

У меня пока нет опыта работы с C#. Я предполагаю, что [] [] означает трехмерный массив.

В VB6 я бы просто сказать

Redim inputs(2,2) 

, а затем:

inputs(0,0) = 64 
inputs(0,1) = 92 
inputs(0,2) = 33 
inputs(1,0) = 4 
inputs(1,1) = 84 
inputs(1,2) = 449 

и т.д ...

Но я предполагаю, что это не так просто в C#. Если бы кто-нибудь мог помочь, я был бы очень рад.

спасибо.

+4

Почему '[] []' означают * три * размеры? Если вы собираетесь полностью заполнять данные, зачем вообще называть «Submatrix»? Я предлагаю вам прочитать http://msdn.microsoft.com/en-us/library/2s05feca.aspx - было бы гораздо лучше сосредоточиться на изучении массивов * вообще *, чем просто популяционный аспект. –

+0

входы [0,0] = 64; –

ответ

9

double[][] является зазубренный массив - это массив массивов. Чтобы заполнить это, вы должны заполнить внешний массив набором массивов double[]. Тем не менее, я ожидаю, что вы хотите прямоугольник : double[,], например new double[3,2]. Там есть стенография для инициализации таких массивов:

double[,] data = new double[2, 3] { { 64, 92, 33 }, { 4, 84, 449 } }; 
double val = data[1, 2]; // 449.0 
1

У вас есть массив массивов. Таким образом, вы должны инициализировать их так:

double[][] inputs = new double[][] 
    { 
     new double[] { 1, 2, 3 }, 
     new double[] { 4, 5, 6 }, 
     new double[] { 7, 8, 9 } 
    }; 

Если у вас было два х мерный массивом (inputs[,]), то это было бы:

double[,] inputs = new double[,] 
    { 
     { 1, 2, 3 }, 
     { 4, 5, 6 }, 
     { 7, 8, 9 } 
    }; 

Но, как сказал Джон Скит, чтение о массивах являются первой вещью ты должен сделать.

1

Чтобы сохранить его очень просто:

double[][] inputs = new double[3][]; 
inputs[0] = new double[3]; 
inputs[1] = new double[3]; 
inputs[2] = new double[3]; 

inputs[0][0] = 1; 
inputs[0][1] = 2; 
inputs[0][2] = 3; 
inputs[1][0] = 4; 
inputs[1][1] = 5; 
inputs[1][2] = 6; 
inputs[2][0] = 7; 
inputs[2][1] = 8; 
inputs[2][2] = 9; 
0

двойной [] [] является зазубренный массив. Вероятно, вы имеете в виду double [,], который представляет собой двумерный массив.

Инициализация двумерного массива:

double[,] matrix = new double[3,2] = {{1,2} {3,4}, {4,5}} 

У вас уже есть примеры для инициализации неровные массивы, из других ответов.

Разница между зубчатыми и истинными многомерными массивами на практике - это зубчатые массивы, массивы массивов, поэтому для них невозможно быть прямоугольным, т. Е.матрица, поэтому зубчатая:

double[][] jagged = new double[2] 
        { 
         new double[4], 
         new double[2] 
        }; 

Способ, которым они выложены в памяти, также отличается. Многомерный массив является единственной ссылкой на непрерывное пространство памяти. Жесткие массивы - это истинный массив массивов.

Подробнее об этом here