Aller au contenu

Les Listes

En C#, une liste (List<T>) est une collection d'éléments du même type qui peut grandir ou rétrécir dynamiquement. Contrairement aux tableaux (array) dont la taille est fixe, une liste peut recevoir de nouveaux éléments ou en perdre.


1. Déclarer une liste

Pour utiliser une liste, on doit importer l'espace de noms :

using System.Collections.Generic;

Ensuite, on peut créer une liste :

// Liste de nombres entiers
List<int> nombres = new List<int>();

// Liste de chaînes de caractères
List<string> prenoms = new List<string>();

Pourquoi le mot-clé new ?

En C#, new sert à créer un nouvel objet. Une liste est un objet, et avant de l'utiliser il faut la construire (l'instancier).

Exemple :

List<int> nombres = new List<int>();
  • List<int> → c'est le type (une liste de nombres entiers).
  • nombres → c'est le nom de la variable qui va contenir la liste.
  • new List<int>() → c'est la création d'une nouvelle liste vide en mémoire.

⚠️ Si on oublie new, la liste n'existe pas encore et on ne peut pas ajouter d'éléments. Cela provoque une erreur à l'exécution (NullReferenceException).

👉 Pour imaginer facilement : - new = fabriquer une nouvelle boîte vide. - Ensuite on peut mettre des choses dans la boîte avec .Add().


2. Ajouter un élément avec .Add()

La méthode .Add() permet d'ajouter un nouvel élément à la fin de la liste.

List<string> fruits = new List<string>();

fruits.Add("Pomme");
fruits.Add("Banane");
fruits.Add("Cerise");

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

Résultat :

Pomme
Banane
Cerise

3. Supprimer un élément avec .RemoveAt()

La méthode .RemoveAt(index) permet de supprimer un élément en fonction de sa position dans la liste. ⚠️ L'indexation commence à 0.

List<string> fruits = new List<string>() { "Pomme", "Banane", "Cerise" };

// Supprime l’élément à l’index 1 (ici "Banane")
fruits.RemoveAt(1);

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

Résultat :

Pomme
Cerise
Image title
removeAt(index)

4. Supprimer un élément avec .Remove()

La méthode .Remove(valeur) supprime le premier élément qui correspond à la valeur donnée. Si la valeur existe plusieurs fois, seule la première occurrence est retirée.

List<string> fruits = new List<string>() { "Pomme", "Banane", "Cerise", "Banane" };

// Supprime uniquement la première "Banane"
fruits.Remove("Banane");

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

Résultat :

Pomme
Cerise
Banane

5. Vérifier si un élément existe avec .Contains()

La méthode .Contains(valeur) permet de vérifier si un élément existe dans la liste.\ Elle retourne un booléen (true ou false).

List<string> fruits = new List<string>() { "Pomme", "Banane", "Cerise" };

if (fruits.Contains("Banane"))
{
    Console.WriteLine("Oui, la banane est dans la liste.");
}
else
{
    Console.WriteLine("Non, la banane n'est pas dans la liste.");
}

Résultat :

Oui, la banane est dans la liste.

6. Exemple complet

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> nombres = new List<int>();

        // On ajoute des nombres
        nombres.Add(10);
        nombres.Add(20);
        nombres.Add(30);

        Console.WriteLine("Liste initiale :");
        foreach (int n in nombres)
        {
            Console.WriteLine(n);
        }

        // On supprime le 2ème élément (index 1 → 20)
        nombres.RemoveAt(1);

        Console.WriteLine("\nListe après RemoveAt :");
        foreach (int n in nombres)
        {
            Console.WriteLine(n);
        }

        // On supprime la valeur 30 directement
        nombres.Remove(30);

        Console.WriteLine("\nListe après Remove(30) :");
        foreach (int n in nombres)
        {
            Console.WriteLine(n);
        }

        // On vérifie si 10 est encore dans la liste
        if (nombres.Contains(10))
        {
            Console.WriteLine("\nOui, 10 est encore présent dans la liste.");
        }
    }
}

Résultat :

Liste initiale :
10
20
30

Liste après RemoveAt :
10
30

Liste après Remove(30) :
10

Oui, 10 est encore présent dans la liste.

7. Points importants à retenir

  • Une liste est comme une "boîte extensible" qui peut contenir plusieurs valeurs.\
  • .Add() → ajoute un élément à la fin de la liste.\
  • .RemoveAt(index) → supprime un élément à la position indiquée.\
  • .Remove(valeur) → supprime le premier élément qui correspond à la valeur donnée.\
  • .Contains(valeur) → vérifie si une valeur existe déjà dans la liste.\
  • Les index commencent à 0.\
  • Nécessite using System.Collections.Generic;.\
  • new = créer une nouvelle liste vide en mémoire avant de l'utiliser.

✅ Vous pouvez maintenant manipuler facilement des listes en C#!


8. Tableau récapitulatif

Méthode Signature Rôle Retourne Exemple
Add void Add(T item) Ajoute un élément à la fin de la liste fruits.Add("Pomme");
RemoveAt void RemoveAt(int index) Supprime l’élément à l’index donné fruits.RemoveAt(0); // supprime le 1er
Remove bool Remove(T item) Supprime la première occurrence de la valeur true si supprimé, sinon false fruits.Remove("Banane");
Contains bool Contains(T item) Vérifie si la valeur existe dans la liste true / false fruits.Contains("Cerise")

ℹ️ Rappel : les index commencent à 0. RemoveAt provoquera une ArgumentOutOfRangeException si l’index n’existe pas.


Quiz

Testez vos connaissances ! 📝 Clique sur chaque question pour découvrir la réponse.

1️⃣ Que fait fruits.Add("Pomme") ?

A. Remplace le premier élément par "Pomme"
B. Ajoute "Pomme" à la fin de la liste
C. Insère "Pomme" au début de la liste
D. Trie la liste puis ajoute "Pomme"

✅ Afficher la réponse
Réponse B : Add ajoute toujours l’élément à la fin.

2️⃣ Quelle instruction supprime le 1er élément de la liste ?

A. fruits.RemoveAt(0)
B. fruits.RemoveFirst()
C. fruits.Remove("Pomme")
D. fruits.Delete(0)

✅ Afficher la réponse
Réponse A : RemoveAt(0) supprime l’élément à l’index 0 (le premier).

3️⃣ Que retourne fruits.Remove("Banane") ?

A. Toujours true
B. Toujours false
C. true si une "Banane" a été supprimée, sinon false
D. Le nombre d'éléments supprimés

✅ Afficher la réponse
Réponse C : Remove(valeur) renvoie un booléen selon qu’une occurrence a été retirée.

4️⃣ Quelle est la différence entre RemoveAt et Remove ?

A. Aucune, elles font la même chose
B. RemoveAt prend un index, Remove prend une valeur
C. RemoveAt prend une valeur, Remove prend un index
D. Remove supprime toutes les occurrences automatiquement

✅ Afficher la réponse
Réponse B : RemoveAt(index) vise une position ; Remove(valeur) vise la première occurrence de la valeur.

5️⃣ Quel est le résultat de ce code ?

var nums = new List<int> { 1, 2, 2, 3 };
    nums.Remove(2);
    Console.WriteLine(nums.Contains(2));
A. Affiche false
B. Affiche true
C. Compile pas
D. Dépend de l’OS

✅ Afficher la réponse
Réponse B : Remove(2) retire seulement la première occurrence ; il reste encore un 2, donc Contains(2) affiche true.

Pour aller plus loin