English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Stack è un tipo di raccolta speciale che memorizza gli elementi in modo LIFO (last in, first out). C# include il tipo generico Stack<T> e la classe di raccolta Stack non generica. Si consiglia di utilizzare la raccolta generica Stack<T>.
La pila è utile per memorizzare temporaneamente dati in forma LIFO e potresti volerlo eliminare dopo aver recuperato il valore dell'elemento.
Stack<T> è una raccolta LIFO (last in, first out).
Si trova nello spazio dei nomi System.Collection.Generic.
Stack<T> può contenere elementi di tipo specificato. Fornisce la verifica del tipo a compile-time e non esegue boxing/unboxing, poiché è generico.
Puoi aggiungere elementi utilizzando il metodo Push(). Non puoi utilizzare la sintassi di inizializzazione di集合 (collection-initializer).
Puoi recuperare gli elementi utilizzando i metodi Pop() e Peek(). Non supporta gli indici.
Puoi creare oggetti specificando il tipo di elemento di tipo Stack<T> che memorizza. L'esempio seguente utilizza il metodo Push () per creare e aggiungere elementi in Stack <T>. La pila consente valori null (per i tipi di riferimento) e valori duplicati.
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 + ","); // Stampa 4,3,2,1,
Puoi anche creare una pila da un array come segue.
int[] arr = new int[]{ 1, 2, 3, 4}; Stack<int> myStack = new Stack<int>(arr); foreach (var item in myStack) Console.Write(item + ","); // Stampa 4,3,2,1,
Proprietà | Uso |
---|---|
Count | Restituisce il numero totale di elementi nella pila. |
Metodo | Uso |
---|---|
Push(T) | Inserisce un elemento in cima alla pila. |
Peek() | Restituisce l'elemento in cima alla pila. |
Pop() | Elimina e restituisce l'elemento in cima alla pila. |
Contains(T) | Controlla se esiste un elemento nella pila. |
Clear() | Elimina tutti gli elementi dalla pila. |
Il metodo Pop() restituisce l'ultimo elemento e lo elimina dalla pila. Se la pila è vuota, viene lanciato un InvalidOperationException. Pertanto, controlla sempre il numero di elementi nella pila prima di chiamare il metodo Pop().
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.Write("Numero di elementi nella pila: {0}", myStack.Count); while (myStack.Count > 0) Console.Write(myStack.Pop() + ","); Console.Write("Numero di elementi nella pila: {0}", myStack.Count);
Numero di elementi nella pila: 4 4,3,2,1, Numero di elementi nella pila: 0
Il metodo Peek() restituisce l'ultimo valore aggiunto alla pila, ma non lo elimina. Chiamare il metodo Peek() su una pila vuota lancia un InvalidOperationException. Pertanto, controlla sempre gli elementi nella pila prima di utilizzare il metodo Peek() per recuperare un elemento.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.Write("Numero di elementi nella Stack: {0}", myStack.Count); // Output: 4 if(myStack.Count > 0){ Console.WriteLine(myStack.Peek()); // Output: 4 Console.WriteLine(myStack.Peek()); // Output: 4 } Console.Write("Numero di elementi nella Stack: {0}", myStack.Count); // Output: 4
Il metodo Contains() verifica l'esistenza dell'elemento specificato nella collezione Stack. Se esiste, restituisce true, altrimenti restituisce false.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); myStack.Contains(2); // Restituisce true myStack.Contains(10); // Restituisce false