初始化多维字符串数组

时间:2010-01-15 14:31:46

标签: c# arrays string multidimensional-array

在这里尝试使用循环初始化数组(c#)。行数将根据需要而变化。我需要在程序startweek和endweek中找回我之前计算的两个值。有很多关于使用循环构建int数组的例子,但我找不到动态字符串和多维数组。

由于

如何在string [,]中设置col1的值arrayWeeks = new string [numWeeks,col1];那更清楚吗?

4 个答案:

答案 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;
    }
}