Un autre type que nous allons utiliser à foison est la liste. Nous allons voir comment ce type fonctionne mais sans en faire une étude exhaustive car elle pourrait être bien longue et ennuyeuse. Regardons cet exemple :
Code : C# | List<int> chiffres = new List<int>(); // création de la liste
chiffres.Add(8); // chiffres contient 8
chiffres.Add(9); // chiffres contient 8, 9
chiffres.Add(4); // chiffres contient 8, 9, 4
chiffres.RemoveAt(1); // chiffres contient 8, 4
foreach (int chiffre in chiffres)
{
Console.WriteLine(chiffre);
}
|
La première ligne permet de créer la liste. Nous reviendrons sur cette instruction un peu plus bas dans le chapitre. Il s’agit d’une liste d’entiers.
Nous ajoutons des entiers à la liste grâce à la méthode
Add(). Nous ajoutons en l’occurrence les entiers 8, 9 et 4.
La méthode
RemoveAt() permet de supprimer un élément en utilisant son indice, ici nous supprimons le deuxième entier, c’est-à-dire 9.
Comme les tableaux, le premier élément de la liste commence à l’indice 0.
Après cette instruction, la liste contient les entiers 8 et 4.
Enfin, nous parcourons les éléments de la liste grâce à l’instruction
foreach. Nous y reviendrons en détail lors du chapitre sur les boucles. Pour l’instant, nous avons juste besoin de comprendre que nous affichons tous les éléments de la liste.
Ce qui donne :
Les lecteurs assidus auront remarqués que la construction de la liste est un peu particulière. Passons sur le mot clé
new qui permet de créer la liste, nous y reviendrons plus en détail dans un prochain chapitre. Par contre, on observe l’utilisation de chevrons <> pour indiquer le type de la liste. Pour avoir une liste d’entier, il suffit d’indiquer le type
int à l’intérieur des chevrons. Ainsi, il ne sera pas possible d’ajouter autre chose qu’un entier dans cette liste. Par exemple, l’instruction suivante provoque une erreur de compilation :
Code : C# | List<int> chiffres = new List<int>(); // création de la liste
chiffres.Add("chaine"); // ne compile pas
|
Evidemment, on ne peut pas ajouter des choux à une liste de carottes !
De la même façon, si l’on souhaite créer une liste de chaine de caractères, nous pourrons utiliser le type
string à l’intérieur des chevrons :
Code : C# | List<string> chaines = new List<string>(); // création de la liste
chaines.Add("chaine"); // compilation OK
chaines.Add(1); // compilation KO, on ne peut pas ajouter un entier dans une liste de chaines de caractères
|
Les listes possèdent des méthodes bien pratiques qui permettent toutes sortes d’opérations sur la liste. Par exemple, la méthode
IndexOf() permet de rechercher un élément dans la liste et de renvoyer son indice.
Code : C# | List<string> jours = new List<string>();
jours.Add("Lundi");
jours.Add("Mardi");
jours.Add("Mercredi");
jours.Add("Jeudi");
jours.Add("Vendredi");
jours.Add("Samedi");
jours.Add("Dimanche");
int indice = jours.IndexOf("Mercredi"); // indice vaut 2
|
Nous aurons l’occasion de voir d’autres utilisations de méthodes de la liste dans les chapitres suivants.
La liste que nous venons de voir (List<>) est en fait ce que l’on appelle
un type générique. Nous n’allons pas rentrer dans le détail de ce qu’est un type générique pour l’instant, mais il faut juste savoir qu’un type générique permet d’être spécialisé par un type concret. Pour notre liste, cette généricité permet d’indiquer de quel type est la liste, une liste d’entiers ou une liste de chaines de caractères, etc …
Ne vous inquiétez pas si tout ceci n’est pas parfaitement clair, nous reviendrons plus en détail sur les génériques dans un chapitre ultérieur. Le but ici est de commencer à se familiariser avec le type List<> que nous utiliserons régulièrement et les exemples que nous verrons permettront d’appréhender les subtilités de ce type.
À noter qu’il existe également une écriture simplifiée des listes. En effet, il est possible de remplacer :
Code : C# | List<string> jours = new List<string>();
jours.Add("Lundi");
jours.Add("Mardi");
jours.Add("Mercredi");
jours.Add("Jeudi");
jours.Add("Vendredi");
jours.Add("Samedi");
jours.Add("Dimanche");
|
par
Code : C# | List<string> jours = new List<string> { "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" };
|
un peu comme pour les tableaux.