Застрял здесь, пытаясь инициализировать массив (С#), используя цикл. Количество строк изменится в зависимости. Мне нужно вернуть два значения, которые я вычисляю ранее в программе startweek, и endweek. Множество примеров построения массивов int с использованием циклов, но я ничего не могу найти для динамических строк и многомерных массивов.
Спасибо
как установить значения для col1 в строке [,] arrayWeeks = новая строка [numWeeks, col1]; Яснее?
(Спасибо за разъяснение.) Вы можете сделать многомерный инициализатор следующим образом:
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";
Но, очевидно, внутри вашей петли.
Если количество строк изменяется в зависимости от некоторого коэффициента (не фиксированного), было бы лучше использовать контейнер, например Список (см. list на MSDN). Вы можете вложить список в список, чтобы создать многомерный список.
Существует два типа типов многомерных массивов в С#. Есть подлинные многомерные массивы:
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!";
Поздно к разговору, но вот пример массива неровных массивов при динамическом изменении размера и данных:
// 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;
}
}