Exporter (0) Imprimer
Développer tout

List.TrimExcess, méthode

Affecte à la capacité le nombre réel d'éléments dans List, si ce nombre est inférieur à une valeur de seuil.

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

public void TrimExcess ()
public void TrimExcess ()
public function TrimExcess ()
Non applicable.

Cette méthode peut être utilisée pour réduire au minimum la mémoire occupée par une collection si aucun nouvel élément ne doit être ajouté à celle-ci. Le coût de la réallocation et de la copie d'un grand List peut néanmoins être considérable. Par conséquent, la méthode TrimExcess est inactive si la liste est à plus de 90 % de la capacité. Cela évite de supporter un coût de réallocation élevé pour un gain peu significatif.

RemarqueRemarque :

Le seuil actuel de 90 % peut être modifié dans les versions ultérieures.

Cette méthode est une opération O(n), où n est égal à Count.

Pour rétablir l'état initial de List, appelez la méthode Clear avant d'appeler la méthode TrimExcess. Si la fonction Trim est appliquée à un List vide, la capacité de List prend sa valeur par défaut.

La capacité peut également être définie à l'aide de la propriété Capacity.

L'exemple de code suivant illustre la méthode TrimExcess. De nombreuses propriétés et méthodes de la classe List permettent d'ajouter, d'insérer et de supprimer des éléments dans une liste de chaînes. La méthode TrimExcess permet ensuite de réduire la capacité à correspondre au nombre, et les propriétés Capacity et Count sont affichées. Si la capacité inutilisée avait été inférieure à 10 % de la capacité totale, la liste n'aurait pas été redimensionnée. Enfin, le contenu de la liste est effacé.

using System;
using System.Collections.Generic;

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

        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

        dinosaurs.Add("Tyrannosaurus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Mamenchisaurus");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Compsognathus");

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

        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
        Console.WriteLine("Count: {0}", dinosaurs.Count);

        Console.WriteLine("\nContains(\"Deinonychus\"): {0}",
            dinosaurs.Contains("Deinonychus"));

        Console.WriteLine("\nInsert(2, \"Compsognathus\")");
        dinosaurs.Insert(2, "Compsognathus");

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

        Console.WriteLine("\ndinosaurs[3]: {0}", dinosaurs[3]);

        Console.WriteLine("\nRemove(\"Compsognathus\")");
        dinosaurs.Remove("Compsognathus");

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

        dinosaurs.TrimExcess();
        Console.WriteLine("\nTrimExcess()");
        Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
        Console.WriteLine("Count: {0}", dinosaurs.Count);

        dinosaurs.Clear();
        Console.WriteLine("\nClear()");
        Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
        Console.WriteLine("Count: {0}", dinosaurs.Count);
    }
}

/* This code example produces the following output:

Capacity: 0

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus

Capacity: 8
Count: 5

Contains("Deinonychus"): True

Insert(2, "Compsognathus")

Tyrannosaurus
Amargasaurus
Compsognathus
Mamenchisaurus
Deinonychus
Compsognathus

dinosaurs[3]: Mamenchisaurus

Remove("Compsognathus")

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus

TrimExcess()
Capacity: 5
Count: 5

Clear()
Capacity: 5
Count: 0
 */

Windows 98, Windows Server 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

Microsoft .NET Framework 3.0 est pris en charge sur Windows Vista, Microsoft Windows XP SP2 et Windows Server 2003 SP1.

.NET Framework

Prise en charge dans : 3.0, 2.0

.NET Compact Framework

Prise en charge dans : 2.0

XNA Framework

Prise en charge dans : 1.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft