English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Stack est un type de collection spécial qui stocke les éléments de manière LIFO (dernier entré, premier sorti). C# inclut le Stack<T> générique et la classe de collection Stack non générique. Il est recommandé d'utiliser Stack<T> générique.
La pile est très utile pour stocker temporairement des données en forme LIFO et vous pourriez vouloir supprimer l'élément après avoir récupéré sa valeur.
Stack<T> est une collection FIFO (dernier entré, premier sorti).
Il se trouve sous l'espace de noms System.Collection.Generic.
Stack<T> peut contenir des éléments de types spécifiés. Il fournit un contrôle de type à la compilation et ne réalise pas de boxing./Dépaquetage, car c'est générique.
Il est possible d'ajouter des éléments en utilisant la méthode Push(). Il ne faut pas utiliser l'initialisation de collection, car elle est générique.-syntaxis initializer)
Les éléments peuvent être récupérés à l'aide des méthodes Pop() et Peek(). Il ne prend pas en charge les indexeurs.
Vous pouvez créer des objets en spécifiant le type de l'élément stocké dans Stack<T> via les paramètres de type. L'exemple suivant utilise la méthode Push() pour créer et ajouter des éléments dans Stack <T>. Le stack permet des valeurs null (pour les types de référence) et des valeurs répétées.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); foreach(var item in myStack) Console.Write(item + "," //Imprimer4,3,2,1,
Vous pouvez également créer un stack à partir d'un tableau, comme suit.
int[] arr = new int[]{ 1, 2, 3, 4}; Stack<int> myStack = new Stack<int>(arr); foreach(var item in myStack) Console.Write(item + "," //Imprimer4,3,2,1,
Propriété | Utilisation |
---|---|
Count | Renvoie le nombre total d'éléments dans le stack. |
Méthode | Utilisation |
---|---|
Push(T) | Insère un élément au sommet du stack. |
Peek() | Renvoie l'élément en haut du stack. |
Pop() | Supprime et renvoie l'élément en haut du stack. |
Contains(T) | Vérifie si un élément existe dans le stack. |
Clear() | Supprime tous les éléments du stack. |
La méthode Pop() renvoie le dernier élément et le supprime du stack. Si le stack est vide, une exception InvalidOperationException est levée. Par conséquent, vérifiez toujours le nombre d'éléments dans le stack avant d'appeler la méthode Pop().
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.Write("Nombre d'éléments dans le stack: {0}", myStack.Count); while(myStack.Count > 0) Console.Write(myStack.Pop(), + "," Console.Write("Nombre d'éléments dans le stack: {0}", myStack.Count);
Nombre d'éléments dans le stack :4 4,3,2,1, Nombre d'éléments dans le stack : 0
La méthode Peek() renvoie la dernière valeur ajoutée au stack sans la supprimer. Appeler la méthode Peek() sur un stack vide lève une exception InvalidOperationException. Par conséquent, vérifiez toujours l'élément dans le stack avant de rechercher un élément à l'aide de la méthode Peek().
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.Write("Nombre d'éléments dans la pile: {0}", myStack.Count);// Sortie 4 if(myStack.Count > 0){ Console.WriteLine(myStack.Peek()); // Sortie 4 Console.WriteLine(myStack.Peek()); // Sortie 4 } Console.Write("Nombre d'éléments dans la pile: {0}", myStack.Count);// Sortie 4
La méthode Contains() vérifie si l'élément spécifié existe dans la collection Stack. S'il existe, elle retourne true, sinon false.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); myStack.Contains(2); // Retour true myStack.Contains(10); // Retour false