Exporter (0) Imprimer
Développer tout

List.RemoveAll, méthode

Remarque : cette méthode est nouvelle dans le .NET Framework version 2.0.

Supprime tous les éléments qui correspondent aux conditions définies par le prédicat spécifié.

Espace de noms : System.Collections.Generic
Assembly : mscorlib (dans mscorlib.dll)

public int RemoveAll (
	Predicate<T> match
)
public int RemoveAll (
	Predicate<T> match
)
public function RemoveAll (
	match : Predicate<T>
) : int

Paramètres

match

Délégué Predicate qui définit les conditions des éléments à supprimer.

Valeur de retour

Nombre d'éléments supprimés du List.

Type d'exceptionCondition

ArgumentNullException

match est référence Null (Nothing en Visual Basic).

Predicate est le délégué d'une méthode qui retourne true, si l'objet qui lui est passé correspond aux conditions définies dans ce délégué. Les éléments du List actuel sont passés un par un au délégué Predicate et les éléments qui correspondent aux conditions sont supprimés du List.

Cette méthode effectue une recherche linéaire ; par conséquent, cette méthode est une opération O(n), où n est égal à Count.

L'exemple de code suivant illustre la méthode RemoveAll et de nombreuses autres méthodes qui utilisent le délégué générique Predicate.

Un List de chaînes est créé, contenant 8 noms de dinosaures dont deux (aux emplacements 1 et 5) se terminent par "saure". L'exemple de code définit également une méthode de recherche de prédicat nommée EndsWithSaurus, qui accepte un paramètre de chaîne et retourne une valeur Boolean qui indique si la chaîne d'entrée se termine par "saure".

Les méthodes Find, FindLast et FindAll permettent d'effectuer la recherche dans la liste avec la méthode de prédicat de recherche.

La méthode RemoveAll permet de supprimer toutes les entrées se terminant par "saurus". Elle parcourt la liste en commençant au début et en passant chaque élément un à un à la méthode EndsWithSaurus. L'élément est supprimé si la méthode EndsWithSaurus retourne true.

RemarqueRemarque

En C# et Visual Basic, il n'est pas nécessaire de créer le délégué Predicate<string> (Predicate(Of String) en Visual Basic) explicitement. Ces langages déduisent le délégué approprié à partir du contexte et le créent automatiquement.

Enfin, la méthode Exists vérifie qu'aucune chaîne de la liste ne se termine par "saurus".

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();

        dinosaurs.Add("Compsognathus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Oviraptor");
        dinosaurs.Add("Velociraptor");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Dilophosaurus");
        dinosaurs.Add("Gallimimus");
        dinosaurs.Add("Triceratops");

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nTrueForAll(EndsWithSaurus): {0}",
            dinosaurs.TrueForAll(EndsWithSaurus));

        Console.WriteLine("\nFind(EndsWithSaurus): {0}", 
            dinosaurs.Find(EndsWithSaurus));

        Console.WriteLine("\nFindLast(EndsWithSaurus): {0}",
            dinosaurs.FindLast(EndsWithSaurus));

        Console.WriteLine("\nFindAll(EndsWithSaurus):");
        List<string> sublist = dinosaurs.FindAll(EndsWithSaurus);

        foreach(string dinosaur in sublist)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine(
            "\n{0} elements removed by RemoveAll(EndsWithSaurus).", 
            dinosaurs.RemoveAll(EndsWithSaurus));

        Console.WriteLine("\nList now contains:");
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nExists(EndsWithSaurus): {0}", 
            dinosaurs.Exists(EndsWithSaurus));
    }

    // Search predicate returns true if a string ends in "saurus".
    private static bool EndsWithSaurus(String s)
    {
        if ((s.Length > 5) && 
            (s.Substring(s.Length - 6).ToLower() == "saurus"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

TrueForAll(EndsWithSaurus): False

Find(EndsWithSaurus): Amargasaurus

FindLast(EndsWithSaurus): Dilophosaurus

FindAll(EndsWithSaurus):
Amargasaurus
Dilophosaurus

2 elements removed by RemoveAll(EndsWithSaurus).

List now contains:
Compsognathus
Oviraptor
Velociraptor
Deinonychus
Gallimimus
Triceratops

Exists(EndsWithSaurus): False
 */

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0

.NET Compact Framework

Prise en charge dans : 2.0

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft