Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Qu'est-ce que les listes ? | Structures de Données et Gestion des Fichiers
C# Au-Delà des Bases

bookQu'est-ce que les listes ?

Prerequisites
Prérequis

Imaginons une situation où il est nécessaire de stocker les noms de tous les étudiants inscrits à un certain cours. La première solution qui vient à l'esprit est de créer un tableau :

index.cs

index.cs

copy
123456
using System; class Program { string[] studentNames = new string[50]; }

Cependant, si à un moment donné il y a plus de 50 étudiants, nous ne pourrons pas stocker leurs noms. De même, dans une situation où il y a moins de 50 étudiants, les espaces inoccupés dans le tableau représenteront un gaspillage de mémoire - cela devient un problème surtout avec de grands tableaux.

Ici, nous avons besoin d'une nouvelle structure capable de stocker une quantité variable d'éléments. Heureusement, une telle structure existe déjà, elle s'appelle une Liste.

Les Listes sont très similaires aux Tableaux, cependant le nombre d'éléments stockés dans une liste est modifiable.

Note
Remarque

Il est possible de modifier les éléments existants dans un Tableau, cependant il n'est pas possible d'y ajouter de nouvelles entrées.

La syntaxe suivante permet de déclarer une liste vide :

En utilisant cette syntaxe, il est possible de créer une liste pour stocker les noms des étudiants :

index.cs

index.cs

copy
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

Il est important de noter qu'il est nécessaire d'importer le module Generic pour pouvoir utiliser les listes.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Il suffit d’ajouter cette ligne sous using System; pour importer le module requis.

Méthode Add()

On peut ajouter des éléments à une liste en utilisant la méthode Add :

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

Le code ci-dessus ajoutera quatre éléments à la liste students.

Tout comme un tableau de type string ne peut contenir que des éléments de type string, une liste de type string n’accepte que des éléments de type string.

Indexation

Le premier élément est Anna, il aura donc l’index 0, tandis que Laura aura l’index 1, et ainsi de suite. Les éléments d’une liste peuvent être accédés via l’indexation comme pour un tableau :

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Méthode Count()

Il est possible d'obtenir la longueur d'une liste en utilisant son attribut Count :

index.cs

index.cs

copy
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Longueur dynamique

Notez que la longueur d'une liste est dynamique (modifiable), elle change donc à mesure que l'on ajoute des éléments :

index.cs

index.cs

copy
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Initialisation

Il est également possible d'initialiser une liste avec certains éléments en utilisant la syntaxe suivante :

List<dataType> listName = new List<dataType>{ element1, element2, … };
index.cs

index.cs

copy
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Parcours des listes

Parcours d'une liste de manière similaire à celle des tableaux

Utilisation d'une boucle for

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

Utilisation d'une boucle foreach

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }
Note
Astuce :

Pour raccourcir la syntaxe de déclaration, il est également possible d'utiliser la déclaration implicite. Pour rappel, une déclaration explicite consiste à spécifier le type de données lors de la déclaration de la variable.

index.cs

index.cs

copy
1
float number = 7.9f;

En revanche, avec la déclaration implicite, il suffit d'utiliser le mot-clé var et le compilateur déduit automatiquement le type de la variable en fonction de la valeur assignée :

index.cs

index.cs

copy
1
var number = 7.9f;

Nous pouvons également utiliser la déclaration implicite lors de la déclaration des listes :

index.cs

index.cs

copy
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };

1. Quelle sera la sortie du code suivant :

2. Quel module doit être importé pour utiliser les listes ?

3. Quelle méthode est utilisée pour obtenir la taille (longueur) d'une liste ?

question mark

Quelle sera la sortie du code suivant :

Select the correct answer

question mark

Quel module doit être importé pour utiliser les listes ?

Select the correct answer

question mark

Quelle méthode est utilisée pour obtenir la taille (longueur) d'une liste ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 1

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

What is the difference between an array and a list in C#?

Can you show an example of how to add elements to a list?

How do I access elements in a list using indexing?

Awesome!

Completion rate improved to 2.04

bookQu'est-ce que les listes ?

Glissez pour afficher le menu

Prerequisites
Prérequis

Imaginons une situation où il est nécessaire de stocker les noms de tous les étudiants inscrits à un certain cours. La première solution qui vient à l'esprit est de créer un tableau :

index.cs

index.cs

copy
123456
using System; class Program { string[] studentNames = new string[50]; }

Cependant, si à un moment donné il y a plus de 50 étudiants, nous ne pourrons pas stocker leurs noms. De même, dans une situation où il y a moins de 50 étudiants, les espaces inoccupés dans le tableau représenteront un gaspillage de mémoire - cela devient un problème surtout avec de grands tableaux.

Ici, nous avons besoin d'une nouvelle structure capable de stocker une quantité variable d'éléments. Heureusement, une telle structure existe déjà, elle s'appelle une Liste.

Les Listes sont très similaires aux Tableaux, cependant le nombre d'éléments stockés dans une liste est modifiable.

Note
Remarque

Il est possible de modifier les éléments existants dans un Tableau, cependant il n'est pas possible d'y ajouter de nouvelles entrées.

La syntaxe suivante permet de déclarer une liste vide :

En utilisant cette syntaxe, il est possible de créer une liste pour stocker les noms des étudiants :

index.cs

index.cs

copy
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

Il est important de noter qu'il est nécessaire d'importer le module Generic pour pouvoir utiliser les listes.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Il suffit d’ajouter cette ligne sous using System; pour importer le module requis.

Méthode Add()

On peut ajouter des éléments à une liste en utilisant la méthode Add :

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

Le code ci-dessus ajoutera quatre éléments à la liste students.

Tout comme un tableau de type string ne peut contenir que des éléments de type string, une liste de type string n’accepte que des éléments de type string.

Indexation

Le premier élément est Anna, il aura donc l’index 0, tandis que Laura aura l’index 1, et ainsi de suite. Les éléments d’une liste peuvent être accédés via l’indexation comme pour un tableau :

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Méthode Count()

Il est possible d'obtenir la longueur d'une liste en utilisant son attribut Count :

index.cs

index.cs

copy
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Longueur dynamique

Notez que la longueur d'une liste est dynamique (modifiable), elle change donc à mesure que l'on ajoute des éléments :

index.cs

index.cs

copy
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Initialisation

Il est également possible d'initialiser une liste avec certains éléments en utilisant la syntaxe suivante :

List<dataType> listName = new List<dataType>{ element1, element2, … };
index.cs

index.cs

copy
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Parcours des listes

Parcours d'une liste de manière similaire à celle des tableaux

Utilisation d'une boucle for

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

Utilisation d'une boucle foreach

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }
Note
Astuce :

Pour raccourcir la syntaxe de déclaration, il est également possible d'utiliser la déclaration implicite. Pour rappel, une déclaration explicite consiste à spécifier le type de données lors de la déclaration de la variable.

index.cs

index.cs

copy
1
float number = 7.9f;

En revanche, avec la déclaration implicite, il suffit d'utiliser le mot-clé var et le compilateur déduit automatiquement le type de la variable en fonction de la valeur assignée :

index.cs

index.cs

copy
1
var number = 7.9f;

Nous pouvons également utiliser la déclaration implicite lors de la déclaration des listes :

index.cs

index.cs

copy
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };

1. Quelle sera la sortie du code suivant :

2. Quel module doit être importé pour utiliser les listes ?

3. Quelle méthode est utilisée pour obtenir la taille (longueur) d'une liste ?

question mark

Quelle sera la sortie du code suivant :

Select the correct answer

question mark

Quel module doit être importé pour utiliser les listes ?

Select the correct answer

question mark

Quelle méthode est utilisée pour obtenir la taille (longueur) d'une liste ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 1
some-alt