Vous vous demandez comment organiser efficacement des données complexes en C# ?
La complexité de gérer des structures de données en plusieurs dimensions peut rapidement devenir un casse-tête.
Les tableaux multidimensionnels en C# offrent une solution efficace pour stocker et manipuler des données organisées en grilles ou matrices.
Créez votre premier jeu 3D en C# avec Unity, étape par étape.
Les tableaux multidimensionnels sont des structures de données en C# qui permettent de stocker des collections de valeurs organisées en plusieurs dimensions. Contrairement aux tableaux unidimensionnels (ou vecteurs), qui utilisent un seul indice pour accéder à un élément, les tableaux multidimensionnels utilisent plusieurs indices. Cela les rend particulièrement utiles pour représenter des grilles, des matrices, ou d’autres ensembles de données nécessitant une organisation en deux dimensions ou plus.
Nous avons plusieurs types de tableaux multidimensionnels :
- Tableaux à Deux Dimensions (Matrices) :
Un tableau à deux dimensions peut être imaginé comme une grille ou un tableau de valeurs. Chaque élément est accessible par deux indices : un pour la ligne et un pour la colonne.
Dans l’exemple ci-dessus, « Sechan » se situe à la ligne 1, colonne 1. D’où l’indice [1,1]. « Eddy » correspond à la ligne 2, colonne 0. D’où l’indice [2,0].
- Tableaux à Plus de Deux Dimensions :
Bien que moins courants, il est possible de déclarer des tableaux de trois dimensions (ou plus) en C#. Ceux-ci peuvent être utilisés pour représenter des espaces 3D ou des données plus complexes.
Il existe plusieurs manières de déclarer et d’initialiser un tableau multidimensionnel en C#. La syntaxe conserve cependant la même structure que le tableau unidimensionnel à quelques exceptions près :
- Déclaration simplifiée avec initialisation :
publicstring[, ] weaponGrid = {
{"Épée", "Arc", "Lance"},
{"Hache", "Dague",
"Masse"}}; // Syntaxe plus concise pour déclarer et initialiser.
Le symbole « [,] » indique qu’il s’agit d’une variable de type tableau à double dimension. Dans la même logique, placer 2 virgules nécessiterait de renseigner trois indices et par conséquent un tableau à trois dimensions. Les accolades supplémentaires sont utiles pour délimiter chaque ligne dans le tableau.
- Déclaration avec spécification de la taille :
publicstring[, ] weaponGrid = newstring[2, 3]; // Déclare une matrice de 2x3.
Comme d’habitude le mot clé « new » permet de créer un nouvel objet dont le type se révèle être dans notre cas une matrice (tableau à 2 dimensions) « [,] » de chaîne de caractères « string ». On spécifie à l’intérieur du crochet la longueur du tableau. Notez qu’ici deux indices sont à renseigner : le nombre de ligne et le nombre de colonne.
- Déclaration et initialisation avec des valeurs :
publicstring[, ] weaponGrid = newstring[, ]{
{"Épée", "Arc", "Lance"},
{"Hache", "Dague",
"Masse"}}; // Déclare et initialise une matrice avec des noms d'armes.
La première syntaxe que nous avions vue était un sucre syntaxique ou un raccourci si vous préférez. Celle-ci est la syntaxe la plus explicite.
Dans l’exemple à suivre, weaponGrid est une matrice de 2×3 (2 lignes, 3 colonnes) contenant des noms d’armes. Supposons qu’il s’agisse de l’inventaire des armes du joueur :
usingUnityEngine;
publicclassMonScript : MonoBehaviour {
publicstring[, ] weaponGrid = {{"Épée", "Arc", "Lance"},
{"Hache", "Dague", "Masse"}};
voidStart() {
// Accéder à un élément spécifique
Debug.Log("Arme en position [0, 1] : " + weaponGrid[0, 1]);
// Résultat possible : "Arme en position [0, 1] : Arc"
// Modifier un élément du tableau
weaponGrid[1, 2] = "Fouet";
Debug.Log("Nouvelle arme en position [1, 2] : " + weaponGrid[1, 2]);
// Résultat possible : "Nouvelle arme en position [1, 2] : Fouet"
// Afficher le nombre de lignes dans la matrice
Debug.Log("Nombre de lignes : " + weaponGrid.GetLength(0));
// Résultat possible : "Nombre de lignes : 2"
// Afficher le nombre de colonnes dans la matrice
Debug.Log("Nombre de colonnes : " + weaponGrid.GetLength(1));
// Résultat possible : "Nombre de colonnes : 3"
}
}
On accède aux éléments en utilisant deux indices [ligne, colonne]. Par exemple, weaponGrid[0, 1] se réfère à l’arme « Arc ». On peut aussi modifier les valeurs, comme changer « Masse » en « Fouet » à l’indice [1, 2]. Les méthodes GetLength (0) et GetLength (1) permettent de connaître respectivement le nombre de lignes et de colonnes de la matrice.
Les tableaux, qu’ils soient unidimensionnels ou multidimensionnels, sont souvent parcourus et manipulés à l’aide de boucles conditionnelles. Ces boucles permettent d’itérer sur chaque élément du tableau et d’effectuer des opérations basées sur des conditions spécifiques. Dans le prochain article, nous découvrirons cela de plus près.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment déclarer un tableau multidimensionnel en C# ?
Quelle est la différence entre un tableau unidimensionnel et un tableau multidimensionnel ?
Comment accéder et modifier des éléments dans un tableau multidimensionnel en C# ?
Comment connaître la taille d'un tableau multidimensionnel en C# ?
Pourquoi utiliser des tableaux multidimensionnels en programmation C# ?
Conclusion
Les tableaux multidimensionnels en C# offrent une flexibilité inégalée pour organiser des données complexes. Avez-vous déjà utilisé ces structures dans vos projets ? Quelle a été votre expérience ?