83 votes

Comment déclarer un tableau de chaînes de caractères à deux dimensions ?

string[][] Tablero = new string[3][3];

J'ai besoin d'un tableau 3x3 pour enregistrer les informations. Comment puis-je déclarer cela en C# ?

114voto

explorer Points 3352
string[,] Tablero = new string[3,3];

Vous pouvez également l'instancier dans la même ligne avec la syntaxe de l'initialisateur de tableau comme suit :

string[,] Tablero = new string[3, 3] {{"a","b","c"},
                                      {"d","e","f"}, 
                                      {"g","h","i"} };

57voto

0xA3 Points 73439

C'est probablement ce que vous voulez :

string[,] Tablero = new string[3,3];

Vous obtiendrez ainsi un tableau de type matrice dans lequel toutes les lignes ont la même longueur.

Le tableau de votre exemple est un tableau dit réseau en dents de scie c'est-à-dire un tableau de tableaux dont les éléments peuvent être de tailles différentes. Un tableau irrégulier doit être créé d'une manière différente :

string[][] Tablero = new string[3][];
for (int i = 0; i < Tablero.GetLength(0); i++)
{
    Tablero[i] = new string[3];
}

Vous pouvez également utiliser des initialisateurs pour remplir les éléments du tableau avec des données :

string[,] Tablero = new string[,]
{
    {"1.1", "1.2", "1.3"},
    {"2.1", "2.2", "2.3"},
    {"3.1", "3.2", "3.3"}
};

Et dans le cas d'un réseau dentelé :

string[][] Tablero = new string[][]
{
    new string[] {"1.1", "1.2"},
    new string[] {"2.1", "2.2", "2.3", "2.4"},
    new string[] {"3.1", "3.2", "3.3"}
};

17voto

Bashir Magomedov Points 1480

Vous venez de déclarer un réseau irrégulier. Ce type de tableau peut avoir des tailles différentes pour toutes les dimensions. Par exemple :

string[][] jaggedStrings =  {
new string[] {"x","y","z"},
new string[] {"x","y"},
new string[] {"x"}
};

Dans votre cas, vous avez besoin d'un tableau régulier. Voir les réponses ci-dessus. En savoir plus sur les tableaux en dents de scie

12voto

Hans Passant Points 475940

Je suppose que c'est ce que vous recherchez :

        string[,] Tablero = new string[3,3];

La syntaxe d'un tableau en dents de scie est la suivante :

        string[][] Tablero = new string[3][];
        for (int ix = 0; ix < 3; ++ix) {
            Tablero[ix] = new string[3];
        }

10voto

Nightwish91 Points 633

Il existe deux types de tableaux multidimensionnels en C#, appelés Multidimensional y Jagged .

Pour le multidimensionnel, vous pouvez utiliser :

string\[,\] multi = new string\[3, 3\];

Pour le jagged array, il faut écrire un peu plus de code :

string[][] jagged = new string[3][];
            for (int i = 0; i < jagged.Length; i++)
            {
                jagged[i] = new string[3];
            }

En bref, jagged array est à la fois plus rapide et a une syntaxe intuitive. Pour plus d'informations, voir : cette question de Stackoverflow

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X