Stack Classe

Définition

Représente une collection non générique d’objets non générique (LIFO) de dernière entrée simple.

public ref class Stack : System::Collections::ICollection
public ref class Stack : ICloneable, System::Collections::ICollection
public class Stack : System.Collections.ICollection
[System.Serializable]
public class Stack : ICloneable, System.Collections.ICollection
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Stack : ICloneable, System.Collections.ICollection
public class Stack : ICloneable, System.Collections.ICollection
type Stack = class
    interface ICollection
    interface IEnumerable
[<System.Serializable>]
type Stack = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Stack = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
type Stack = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public Class Stack
Implements ICollection
Public Class Stack
Implements ICloneable, ICollection
Héritage
Stack
Attributs
Implémente

Exemples

L’exemple suivant montre comment créer et ajouter des valeurs à une pile et comment afficher ses valeurs.

using System;
using System.Collections;
public class SamplesStack  {

   public static void Main()  {

      // Creates and initializes a new Stack.
      Stack myStack = new Stack();
      myStack.Push("Hello");
      myStack.Push("World");
      myStack.Push("!");

      // Displays the properties and values of the Stack.
      Console.WriteLine( "myStack" );
      Console.WriteLine( "\tCount:    {0}", myStack.Count );
      Console.Write( "\tValues:" );
      PrintValues( myStack );
   }

   public static void PrintValues( IEnumerable myCollection )  {
      foreach ( Object obj in myCollection )
         Console.Write( "    {0}", obj );
      Console.WriteLine();
   }
}


/*
This code produces the following output.

myStack
    Count:    3
    Values:    !    World    Hello
*/
Imports System.Collections

Public Class SamplesStack    
    
    Public Shared Sub Main()
    
        ' Creates and initializes a new Stack.
        Dim myStack As New Stack()
        myStack.Push("Hello")
        myStack.Push("World")
        myStack.Push("!")
        
        ' Displays the properties and values of the Stack.
        Console.WriteLine("myStack")
        Console.WriteLine(ControlChars.Tab & "Count:    {0}", myStack.Count)
        Console.Write(ControlChars.Tab & "Values:")
        PrintValues(myStack)
    End Sub
    
    Public Shared Sub PrintValues(myCollection As IEnumerable)
        Dim obj As [Object]
        For Each obj In  myCollection
            Console.Write("    {0}", obj)
        Next obj
        Console.WriteLine()
    End Sub

End Class

' This code produces the following output.
'
' myStack
'     Count:     3
'     Values:    !    World    Hello

Remarques

La capacité d’un Stack est le nombre d’éléments qu’il Stack peut contenir. À mesure que les éléments sont ajoutés à un Stack, la capacité est automatiquement augmentée en fonction des besoins grâce à la réaffectation.

Important

Nous vous déconseillons d’utiliser la classe pour le Stack nouveau développement. Au lieu de cela, nous vous recommandons d’utiliser la classe générique System.Collections.Generic.Stack<T> . Pour plus d’informations, consultez Les collections non génériques ne doivent pas être utilisées sur GitHub.

Si Count elle est inférieure à la capacité de la pile, Push il s’agit d’une O(1) opération. Si la capacité doit être augmentée pour prendre en charge le nouvel élément, Push devient une O(n) opération, où n est Count. Pop est une O(1) opération.

Stack accepte null comme valeur valide et autorise les éléments en double.

Constructeurs

Nom Description
Stack()

Initialise une nouvelle instance de la Stack classe vide et a la capacité initiale par défaut.

Stack(ICollection)

Initialise une nouvelle instance de la Stack classe qui contient des éléments copiés à partir de la collection spécifiée et a la même capacité initiale que le nombre d’éléments copiés.

Stack(Int32)

Initialise une nouvelle instance de la Stack classe vide et a la capacité initiale spécifiée ou la capacité initiale par défaut, selon la valeur supérieure.

Propriétés

Nom Description
Count

Obtient le nombre d’éléments contenus dans le Stack.

IsSynchronized

Obtient une valeur indiquant si l’accès au Stack est synchronisé (thread safe).

SyncRoot

Obtient un objet qui peut être utilisé pour synchroniser l’accès au Stack.

Méthodes

Nom Description
Clear()

Supprime tous les objets du Stack.

Clone()

Crée une copie superficielle du Stack.

Contains(Object)

Détermine si un élément se trouve dans le Stack.

CopyTo(Array, Int32)

Copie la Stack valeur dans un index de tableau unidimensionnel Arrayexistant, en commençant à l’index de tableau spécifié.

Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetEnumerator()

Retourne une IEnumerator valeur pour le Stack.

GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
Peek()

Retourne l’objet en haut de l’objet Stack sans le supprimer.

Pop()

Supprime et retourne l’objet en haut du Stack.

Push(Object)

Insère un objet en haut du Stack.

Synchronized(Stack)

Retourne un wrapper synchronisé (thread safe) pour le Stack.

ToArray()

Copie le Stack tableau dans un nouveau tableau.

ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

Méthodes d’extension

Nom Description
AsParallel(IEnumerable)

Active la parallélisation d’une requête.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

Cast<TResult>(IEnumerable)

Convertit les éléments d’un IEnumerable en type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d’une IEnumerable en fonction d’un type spécifié.

S’applique à

Cohérence de thread

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'y a aucune garantie que les membres d’instance soient thread-safe.

Pour garantir la sécurité du thread, Stacktoutes les opérations doivent être effectuées via le wrapper retourné par la Synchronized(Stack) méthode.

L’énumération par le biais d’une collection n’est intrinsèquement pas une procédure thread-safe. Même lorsqu’une collection est synchronisée, d’autres threads peuvent toujours modifier la collection, ce qui provoque la levée d’une exception par l’énumérateur. Pour garantir la sécurité des threads pendant l’énumération, vous pouvez verrouiller la collection pendant toute l’énumération ou intercepter les exceptions résultant des modifications apportées par d’autres threads.

Voir aussi