2010-01-15 3 views
2

Blocage en essayant d'initialiser un tableau (C#) en utilisant une boucle. Le nombre de lignes va changer en fonction. J'ai besoin de récupérer deux valeurs que je calcule plus tôt dans le programme startweek, et endweek. Beaucoup d'exemples sur la construction de tableaux int utilisant des boucles mais rien que je puisse trouver sur les chaînes dynamiques et les tableaux multi-dim.initialisation de tableaux de chaînes à plusieurs dimsions

Merci

Comment définir les valeurs col1 en string [,] arrayWeeks = new string [numWeeks, col1]; Est-ce plus clair?

+1

Quelle est votre question, exactement? –

+0

Que signifie la balise '2'? – Amy

Répondre

3

(. Merci pour la précision) Vous pouvez faire un initialiseur multidimensionnel comme ceci:

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

Ou, si votre tableau est en dents de scie:

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

Si vous êtes dans une boucle, Je suppose que tu veux déchiqueter. Et au lieu d'initialiser avec des valeurs, vous pouvez appeler arrayWeeks[x] = new string[y]; où x est la ligne que vous ajoutez et y est le nombre d'éléments dans cette ligne. Vous pouvez ensuite définir chaque valeur: arrayWeeks[x][i] = ... où vous définissez l'élément ith dans la ligne. Votre déclaration initiale du tableau serait string[][] arrayWeeks = new string[numRows][];

Donc, pour résumer, vous voulez probablement quelque chose qui ressemble à ceci:

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

Mais, de toute évidence, au sein de votre boucle.

3

Il existe deux types de tableaux que vous pouvez appeler "multidimensionnels" en C#. Il y a une véritable multidimensional arrays:

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

Il y a aussi jagged arrays. Un tableau dentelé un tableau dont les éléments sont aussi des tableaux. Les "lignes" d'un tableau en dents de scie peuvent avoir des longueurs différentes. Une note importante avec des tableaux déchiquetés est que vous devez initialiser manuellement les « lignes »:

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

Si le nombre de lignes changent en fonction de certains facteurs (non fixe), il serait préférable d'utiliser un récipient, tel en tant que liste (voir list on the MSDN). Vous pouvez imbriquer une liste dans une liste pour créer une liste multidimensionnelle.

0

à la fin de la conversation, mais voici un exemple de tableau en dents de scie lorsque vous vous définissez la taille et les données dynamiquement:

// 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; 
    } 
} 
Questions connexes