在这里尝试使用循环初始化数组(c#)。行数将根据需要而变化。我需要在程序startweek和endweek中找回我之前计算的两个值。有很多关于使用循环构建int数组的例子,但我找不到动态字符串和多维数组。
由于
如何在string [,]中设置col1的值arrayWeeks = new string [numWeeks,col1];那更清楚吗?
答案 0 :(得分:4)
(感谢您的澄清。)您可以像这样执行多维初始化程序:
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";
但是,显然,在你的循环中。
答案 1 :(得分:3)
在C#中有两种类型的“多维”数组。有真正的multidimensional arrays:
string[,] array = new string[4, 4];
array[0, 0] = "Hello, world!";
// etc.
还有jagged arrays。一个锯齿状数组,一个数组,其元素也是数组。锯齿状阵列中的“行”可以具有不同的长度。锯齿状数组的一个重要注意事项是您必须手动初始化“行”:
string[][] array = new string[4][];
for(int i = 0; i < 4; i++) {
array[i] = new string[4];
}
array[0][0] = "Hello, world!";
答案 2 :(得分:3)
如果行数根据某个因素而变化(不固定),最好使用容器,例如List(参见list on the MSDN)。您可以在列表中嵌套列表以创建多维列表。
答案 3 :(得分: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;
}
}