Stack, classe générique (System.Collections.Generic)

Bibliothèque de classes .NET Framework 
Stack, classe générique 

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

Représente une collection de type dernier entré premier sorti de taille variable d'instances du même type arbitraire.

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

SyntaxeSyntaxe


Visual Basic (Déclaration)
<SerializableAttribute> _
<ComVisibleAttribute(False)> _
Public Class Stack(Of T)
    Implements IEnumerable(Of T), ICollection, _
    IEnumerable


Visual Basic (Utilisation)
Dim instance As Stack(Of T)


C#
[SerializableAttribute] 
[ComVisibleAttribute(false)] 
public class Stack<T> : IEnumerable<T>, ICollection, 
    IEnumerable


C++
[SerializableAttribute] 
[ComVisibleAttribute(false)] 
generic<typename T>
public ref class Stack : IEnumerable<T>, ICollection, 
    IEnumerable


J#
J#  prend en charge l'utilisation de types et de méthodes génériques mais pas la déclaration de nouveaux types et de méthodes génériques.


JScript
JScript ne prend pas en charge les types et les méthodes génériques.

Paramètres de type

 
T

Spécifie le type d'éléments dans la pile.

NotesNotes

Stack est implémenté sous la forme d'un tableau.

La capacité de Stack correspond au nombre d'éléments que peut contenir Stack. Dans cette implémentation, la capacité initiale par défaut pour Stack est 10 ; toutefois, cette valeur par défaut est susceptible de changer dans les futures versions du Kit de développement .NET Framework SDK. Lorsque des éléments sont ajoutés à Stack, la capacité est automatiquement augmentée, si nécessaire, en réallouant le tableau interne. Cette capacité peut diminuer en appelant TrimExcess.

Si Count est inférieur à la capacité de la pile, Push est une opération O(1). Si la capacité doit être augmentée pour intégrer le nouvel élément, Push devient une opération O(n), où n est égal à Count. Pop est une opération O(1).

Stack accepte référence Null (Nothing en Visual Basic) comme valeur valide pour les types référence et autorise les éléments en double.

ExempleExemple

L'exemple de code suivant illustre de nombreuses méthodes de la classe générique Stack. L'exemple de code crée une pile de chaînes avec une capacité par défaut et utilise la méthode Push pour insérer cinq chaînes dans la pile. Les éléments de la pile sont énumérés, ce qui ne modifie pas l'état de la pile. La méthode Pop permet d'exécuter un pop sur la première chaîne pour l'enlever de la pile. La méthode Peek permet d'afficher l'élément suivant sur la pile, et la méthode Pop permet d'exécuter un pop sur cet élément pour l'enlever.

La méthode ToArray permet de créer un tableau et d'y copier les éléments de la pile. Ce tableau est ensuite passé au constructeur Stack qui accepte IEnumerable, créant ainsi une copie de la pile dont l'ordre des éléments est inversé. Les éléments de la copie s'affichent.

Un tableau représentant deux fois la taille de la pile est créé, et la méthode CopyTo est utilisée pour copier les éléments du tableau commençant au milieu du tableau. Le constructeur Stack est utilisé à nouveau pour créer une copie de la pile dont l'ordre des éléments est inversé ; par conséquent, les trois éléments null figurent à la fin.

La méthode Contains permet d'indiquer que la chaîne "four" figure dans la première copie de la pile. La méthode Clear efface ensuite la copie et la propriété Count indique que la pile est vide.



Visual Basic
Imports System
Imports System.Collections.Generic

Module Example

    Sub Main

        Dim numbers As New Stack(Of String)
        numbers.Push("one")
        numbers.Push("two")
        numbers.Push("three")
        numbers.Push("four")
        numbers.Push("five")

        ' A stack can be enumerated without disturbing its contents.
        For Each number As String In numbers
            Console.WriteLine(number)
        Next

        Console.WriteLine(vbLf & "Popping '{0}'", numbers.Pop())
        Console.WriteLine("Peek at next item to pop: {0}", _
            numbers.Peek())    
        Console.WriteLine("Popping '{0}'", numbers.Pop())

        ' Create another stack, using the ToArray method and the
        ' constructor that accepts an IEnumerable(Of T). Note that
        ' the order of items on the new stack is reversed.
        Dim stack2 As New Stack(Of String)(numbers.ToArray())

        Console.WriteLine(vbLf & "Contents of the first copy:")
        For Each number As String In stack2
            Console.WriteLine(number)
        Next
        
        ' Create an array twice the size of the stack, compensating
        ' for the fact that Visual Basic allocates an extra array 
        ' element. Copy the elements of the stack, starting at the
        ' middle of the array. 
        Dim array2((numbers.Count * 2) - 1) As String
        numbers.CopyTo(array2, numbers.Count)
        
        ' Create a second stack, using the constructor that accepts an
        ' IEnumerable(Of T). The elements are reversed, with the null
        ' elements appearing at the end of the stack when enumerated.
        Dim stack3 As New Stack(Of String)(array2)

        Console.WriteLine(vbLf & _
            "Contents of the second copy, with duplicates and nulls:")
        For Each number As String In stack3
            Console.WriteLine(number)
        Next

        Console.WriteLine(vbLf & "stack2.Contains(""four"") = {0}", _
            stack2.Contains("four"))

        Console.WriteLine(vbLf & "stack2.Clear()")
        stack2.Clear()
        Console.WriteLine(vbLf & "stack2.Count = {0}", _
            stack2.Count)
    End Sub
End Module

' This code example produces the following output:
'
'five
'four
'three
'two
'one
'
'Popping 'five'
'Peek at next item to pop: four
'Popping 'four'
'
'Contents of the first copy:
'one
'two
'three
'
'Contents of the second copy, with duplicates and nulls:
'one
'two
'three
'
'
'
'
'stack2.Contains("four") = False
'
'stack2.Clear()
'
'stack2.Count = 0


C#
using System;
using System.Collections.Generic;

class Example
{
    public static void Main()
    {
        Stack<string> numbers = new Stack<string>();
        numbers.Push("one");
        numbers.Push("two");
        numbers.Push("three");
        numbers.Push("four");
        numbers.Push("five");

        // A stack can be enumerated without disturbing its contents.
        foreach( string number in numbers )
        {
            Console.WriteLine(number);
        }

        Console.WriteLine("\nPopping '{0}'", numbers.Pop());
        Console.WriteLine("Peek at next item to destack: {0}", 
            numbers.Peek());
        Console.WriteLine("Popping '{0}'", numbers.Pop());

        // Create a copy of the stack, using the ToArray method and the
        // constructor that accepts an IEnumerable<T>.
        Stack<string> stack2 = new Stack<string>(numbers.ToArray());

        Console.WriteLine("\nContents of the first copy:");
        foreach( string number in stack2 )
        {
            Console.WriteLine(number);
        }
        
        // Create an array twice the size of the stack and copy the
        // elements of the stack, starting at the middle of the 
        // array. 
        string[] array2 = new string[numbers.Count * 2];
        numbers.CopyTo(array2, numbers.Count);
        
        // Create a second stack, using the constructor that accepts an
        // IEnumerable(Of T).
        Stack<string> stack3 = new Stack<string>(array2);

        Console.WriteLine("\nContents of the second copy, with duplicates and nulls:");
        foreach( string number in stack3 )
        {
            Console.WriteLine(number);
        }

        Console.WriteLine("\nstack2.Contains(\"four\") = {0}", 
            stack2.Contains("four"));

        Console.WriteLine("\nstack2.Clear()");
        stack2.Clear();
        Console.WriteLine("\nstack2.Count = {0}", stack2.Count);
    }
}

/* This code example produces the following output:

five
four
three
two
one

Popping 'five'
Peek at next item to destack: four
Popping 'four'

Contents of the first copy:
one
two
three

Contents of the second copy, with duplicates and nulls:
one
two
three




stack2.Contains("four") = False

stack2.Clear()

stack2.Count = 0
 */
Hiérarchie d'héritageHiérarchie d'héritage
System.Object
  System.Collections.Generic.Stack
Sécurité des threadsSécurité des threads

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Stack peut prendre simultanément en charge plusieurs lecteurs, tant que la collection n'est pas modifiée. Même dans ce cas, l'énumération d'une collection n'est intrinsèquement pas une procédure thread-safe. Pour garantir la sécurité des threads pendant l'énumération, vous pouvez verrouiller la collection pendant toute la durée de cette opération. Pour permettre à plusieurs threads d'accéder en lecture et en écriture à la collection, vous devez implémenter votre propre synchronisation.

Plates-formesPlates-formes

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.

Informations de versionInformations de version

.NET Framework

Prise en charge dans : 2.0

.NET Compact Framework

Prise en charge dans : 2.0
Voir aussiVoir aussi

Ces informations proviennent du site de http://msdn2.microsoft.com
Source de cette page : http://msdn2.microsoft.com/fr-fr/library/3278tedw.aspx

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

9 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-4840
Document créé le 30/10/06 01:38, dernière modification le Vendredi 17 Juin 2011, 12:11
Source du document imprimé : http://www.gaudry.be/dotnet-rf-3278tedw.html Document affiché 5 fois ce mois de Mai.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,81 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Notre vie est pour une grande part composée de rêves. Il faut les rattacher à l'action.

Anaïs Nin
 
l'infobrol
Nous sommes le Jeudi 31 Mai 2012, 00:33, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)