Stack Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.