инициализация многомерных строковых массивов

2

Застрял здесь, пытаясь инициализировать массив (С#), используя цикл. Количество строк изменится в зависимости. Мне нужно вернуть два значения, которые я вычисляю ранее в программе startweek, и endweek. Множество примеров построения массивов int с использованием циклов, но я ничего не могу найти для динамических строк и многомерных массивов.

Спасибо

как установить значения для col1 в строке [,] arrayWeeks = новая строка [numWeeks, col1]; Яснее?

  • 1
    Какой именно у вас вопрос?
  • 0
    Что означает тег «2»?
Теги:
string
arrays
multidimensional-array

4 ответа

3
Лучший ответ

(Спасибо за разъяснение.) Вы можете сделать многомерный инициализатор следующим образом:

string[,] arrayWeeks = new string[,] { { "1", "2" }, { "3", "4" }, { "5", "6" }, { "7", "8" } };

Или, если ваш массив зазубрен:

string[][] arrayWeeks = new string[][] 
{
    new string[] {"1","2","3"},
    new string[] {"4","5"},
    new string[] {"6","7"},
    new string[] {"8"}
};

Если вы в цикле, я предполагаю, что вы хотите зазубрить. И вместо инициализации со значениями вы можете вызвать arrayWeeks[x] = new string[y];, где x - это строка, которую вы добавляете, а y - количество элементов в этой строке. Затем вы можете установить каждое значение: arrayWeeks[x][i] = ..., где вы устанавливаете i-й элемент в строке. Ваше начальное объявление массива будет string[][] arrayWeeks = new string[numRows][];

Итак, чтобы суммировать, вы, вероятно, хотите что-то похожее на это:

    int numRows = 2;
    string[][] arrayWeeks = new string[numRows][];
    arrayWeeks[0] = new string[2];
    arrayWeeks[0][0] = "hi";
    arrayWeeks[0][1] = "bye";
    arrayWeeks[1] = new string[1];
    arrayWeeks[1][0] = "aloha";

Но, очевидно, внутри вашей петли.

3

Если количество строк изменяется в зависимости от некоторого коэффициента (не фиксированного), было бы лучше использовать контейнер, например Список (см. list на MSDN). Вы можете вложить список в список, чтобы создать многомерный список.

3

Существует два типа типов многомерных массивов в С#. Есть подлинные многомерные массивы:

string[,] array = new string[4, 4];
array[0, 0] = "Hello, world!";
// etc.

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

string[][] array = new string[4][];
for(int i = 0; i < 4; i++) {
    array[i] = new string[4];
}
array[0][0] = "Hello, world!";
0

Поздно к разговору, но вот пример массива неровных массивов при динамическом изменении размера и данных:

// rowCount from runtime data
stringArray = new string[rowCount][];

for (int index = 0; index < rowCount; index++)
{
    // columnCount from runtime data
    stringArray[index] = new string[columnCount];

    for (int index2 = 0; index2 < columnCount; index2++)
    {
        // value from runtime data
        stringArray[index][index2] = value;
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню