Home Page Home Page Tips & Tricks Come utilizzare la classe Stack ?

Come utilizzare la classe Stack ?


Il namespace System.Collection è ricco di classi che ci permettono di memorizzare i valori così come prima facevamo utilizzando gli array. Abbiamo già visto l'ArrayList e l'HashTable che ci permettono di salvare i nostri oggetti in base a alle nostre esigenze, in questo articolo vedremo l'utilizzo della classe Stack.

La classe Stack ci permette di gestire i nostri oggetti con un tipico utilizzo della politca LIFO (Last In First Out) ovvero l'ultimo oggetto che viene inserito nella Collection è anche il primo ad uscire.

Tramite questo immagine si capisce meglio:



Come si può vedere "Ester" è l'ultimo nome inserito ma è il primo che uscirà dalla lista.
La classe Stack utilizza principalmente due metodi:

- Push
- Pop

Il metodo Push serve per inserire gli oggetti nello stack mentre Pop serve per recuperare l'ultimo oggetto inserito e rimuoverlo direttamente dalla struttura.

C#
Codice .NET n°1
//creo lo stack
Stack _stack = new Stack();
//inserisco oggetti
_stack.Push("Marco");
_stack.Push("David");
_stack.Push("Lorenzo");
_stack.Push("Teo");
_stack.Push("Giovanni");
_stack.Push("Ester");
while (_stack.Count > 0)
{
//recupero e rimuovo gli oggetti castandoli a string
Console.WriteLine("The next value is:{0}", (string)_stack.Pop());
}


Come si vede inserisco i nomi tramite il metodo Push e poi tramite il metodo Pop recupero e tolgo dallo stack gli oggetti.



Se si vuole recuperare l'ultimo oggetto inserito senza rimuoverlo dallo Stack si deve utilizzare il metodo Peek.

Conclusione


La classe Stack è molto utile in quei casi in cui bisogna memorizzare oggetti che devono avere un certo ordine e soprattutto se si deve recuperare l'ultimo oggetto inserito. Nel caso di un'implementazione di una coda LIFO la classe Stack è il candidato ideale.
Questa classe evidenzia ancor di più le molteplici risorse del namespace System.Collection che è un mattone sicuramente importante che sta alla base dell'intera architettura del .NET Framework.
Copyright © dotNetHell.it 2002-2018
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5