2010-01-15 108 views
2

这里试图用循环初始化一个数组(c#)。行数将根据情况而变化。我需要回到计划初期和周末早些时候计算的两个值。很多使用循环构建int数组的示例,但没有任何可以找到动态字符串和多个暗淡数组的示例。初始化多朦字符串数组

由于

我如何设置为COL1的值在串[,] arrayWeeks =新的字符串[numWeeks中,col1];这更清楚吗?

+1

你的问题是,到底是什么? – 2010-01-15 14:34:13

+0

'2'标签是什么意思? – Amy 2010-01-15 14:46:19

回答

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

有两种类型的你可能会在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!"; 
3

如果变化取决于一些因素(不固定),这将是更好地使用的容器,这样的行数作为清单(见list on the MSDN)。您可以在列表中嵌套列表以创建多维列表。

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