Как я могу объявить двумерный строковый массив?


string[][] Tablero = new string[3][3];

Мне нужно иметь расположение массива 3x3 для сохранения информации. Как я могу объявить это в C#?

12 69

12 ответов:

string[,] Tablero = new string[3,3];

вы также можете создать его в той же строке с синтаксисом инициализатора массива следующим образом:

string[,] Tablero = new string[3, 3] {{"a","b","c"},
                                      {"d","e","f"}, 
                                      {"g","h","i"} };

вы, наверное, хотите этого:

string[,] Tablero = new string[3,3];

это создаст вам матрицу, как массив, где все строки имеют одинаковую длину.

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

string[][] Tablero = new string[3][];
for (int i = 0; i < Tablero.GetLength(0); i++)
{
    Tablero[i] = new string[3];
}

вы также можете использовать инициализаторы для заполнения элементов массива с данными:

string[,] Tablero = new string[,]
{
    {"1.1","1.2", "1.3"},
    {"2.1","2.2", "2.3"},
    {"3.1", "3.2", "3.3"}
};

и в случае зубчатый массив:

string[][] Tablero = new string[][]
{
    new string[] {"1.1","1.2", "1.3"},
    new string[] {"2.1","2.2", "2.3"},
    new string[] {"3.1", "3.2", "3.3"}
};

вы только что объявили зубчатый массив. Такие массивы могут иметь различные размеры для всех размеров. Например:

string[][] jaggedStrings =  {
new string[] {"x","y","z"},
new string[] {"x","y"},
new string[] {"x"}
};

в вашем случае вам нужен обычный массив. См. ответы выше. подробнее о зубчатых массивах

Я предполагаю, что вы ищете это:

        string[,] Tablero = new string[3,3];

синтаксис для зубчатого массива:

        string[][] Tablero = new string[3][];
        for (int ix = 0; ix < 3; ++ix) {
            Tablero[ix] = new string[3];
        }

в C# есть 2 типа многомерных массивов, называемых Multidimensional и Jagged.

для многомерных вы можете:

string[,] multi = new string[3, 3];

для зубчатого массива вы должны написать немного больше кода:

string[][] jagged = new string[3][];
            for (int i = 0; i < jagged.Length; i++)
            {
                jagged[i] = new string[3];
            }

короче зубчатый массив и быстрее, и имеет интуитивно понятный синтаксис. Для получения дополнительной информации см.: этот вопрос Stackoverflow

попробуйте это :

string[,] myArray = new string[3,3];

посмотрите на http://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx

string[,] Tablero = new string[3,3];

string[][] и не двумерный массив, это массив массивов (a многомерном массиве). Это что-то другое.

чтобы объявить двумерный массив, используйте следующий синтаксис:

string[,] tablero = new string[3, 3];

Если вы действительно хотите многомерном массиве, вам нужно инициализировать его следующим образом:

string[][] tablero = new string[][] { new string[3], 
                                      new string[3], 
                                      new string[3] };

когда вы пытаетесь создать многомерный массив все, что вам нужно сделать, это добавить запятую в декларации следующим образом:

string[,] tablero = new string[3,3].

3x3 (многомерный) массив также может быть инициализирован (вы уже объявили его) следующим образом:

string[,] Tablero =  {
                        { "a", "b", "c" },
                        { "d", "e", "f" }, 
                        { "g", "h", "i"} 
                     };

вы также можете написать код ниже.

Array lbl_array = Array.CreateInstance(typeof(string), i, j);

где ' i '- количество строк, а' j ' - количество столбцов. с помощью оператора typeof(..) 'метод вы можете выбрать тип вашего массива т. е. int, string, double

есть много примеров по работе с массивами в C# здесь.

Я надеюсь, что это помогает.

спасибо, Дамиан