In .Net abbiamo una classe per gestire i dati di tipo array, in maniera particolare, gestendoli come se l’ultimo inserito è il primo della lista.
La classe dispone di metodi e proprietà che vedremo in questo articolo, il quale fornisce alcuni aspetti introduttivi a tale funzionamento.
Lo Stack è tipo un LIFO, l’ultimo elemento che entra, è il primo che esce.
Come progetto, abbiamo utilizzato il modello di tipo “Windows Application” ma il lettore potrà utilizzarlo anche per progetti di tipo Web application oppure console application.
Stesura del codice
Dopo aver creato un progetto di tipo Windows Application, si aggiunge un pulsante oppure direttamente in qualche metodo o nell’evento load della form andremo a scrivere i vari esempi.
Il frammento di codice che segue permette di inserire nel costruttore un array di tipo string.
VB.Net
Dim nomi As String() = {"Emanuele", "Luigi", "Francesco", "Olga"}
Dim esempioArrayStack As New Stack(Of String)(nomi)
For Each elementoEsamina As String In esempioArrayStack
MessageBox.Show(elementoEsamina)
Next
C#
string[] nomi = {"Emanuele", "Luigi", "Francesco", "Olga"};
Stack<string> esempioArrayStack = new Stack<string>(nomi);
foreach (string elementoEsamina in esempioArrayStack)
{
MessageBox.Show(elementoEsamina);
}
Come si è visto dal precedente codice, verrà visualizzato a video il nome Olga, Francesco, Luigi ed infine Emanuele, nonostante è il primo ad essere inserito.
Se invece vogliamo inserire gli elementi nell’oggetto di tipo Stack tramite il metodo che dispone tale classe, dobbiamo utilizzare il metodo “Push” qui di seguito un esempio di codice.
VB.Net
Dim esempioStack As Stack = New Stack()
esempioStack.Push("Emanuele")
esempioStack.Push("Luigi")
esempioStack.Push("Luca")
For Each elemento As String In esempioStack
MessageBox.Show(elemento)
Next
C#
Stack esempioStack = new Stack();
esempioStack.Push("Emanuele");
esempioStack.Push("Luigi");
esempioStack.Push("Luca");
foreach (string elemento in esempioStack)
{
MessageBox.Show(elemento);
}
In questo caso, inseriamo tre elementi tramite il metodo “Push” e verrà visualizzato nell’ordine di “Luca”, “Luigi” ed “Emanuele”.
Per eliminare un elemento, il metodo da utilizzare è il “Pop” questo metodo elimina l’ultimo elemento inserito.
Qui di seguito un frammento di codice per entrambi i linguaggi.
VB.Net
esempioStack.Pop()
For Each elemento As String In esempioStack
MessageBox.Show(elemento)
Next
C#
esempioStack.Pop();
foreach (string elemento in esempioStack)
{
MessageBox.Show(elemento);
}
Come si vede nel frammento di codice precendente, verranno visualizzati a video i valori che sono “Luigi” e “Emanuele” in quanto il metodo “Pop”, ha cancellato l’ultimo elemento.
Con il metodo “Peek” restituisce il primo oggetto presente nella lista.
Qui di seguito altro esempio di utilizzo.
VB.Net
MessageBox.Show(esempioStack.Peek().ToString())
C#
MessageBox.Show(esempioStack.Peek().ToString());
Anche la classe “Stack” possiede un metodo per verificare se all’interno della lista è presente un determinato valore, questo avviene utilizzando un metodo che in molti conoscono, ossia il Contains.
Di seguito il relativo utilizzo.
VB.Net
If esempioStack.Contains("Luigi") Then
MessageBox.Show("Si")
End If
C#
if (esempioStack.Contains("Luigi"))
{
MessageBox.Show("Si");
}
Ora siamo giunti all’ultimo esempio di codice di questa classe, il metodo “Clear” che permette la cancellazione di tutti gli elementi al suo interno.
Qui di seguito un esempio di codice, in cui si cancellano tutti gli elementi e visualizza a video il totale degli elementi, che sarà naturalmente 0.
VB.Net
esempioStack.Clear()
MessageBox.Show(esempioStack.Count.ToString())
C#
esempioStack.Clear();
MessageBox.Show(esempioStack.Count.ToString());
Conclusioni
L’articolo ha voluto fornire al lettore le basi per utilizzare questa classe del .Net che permette una gestione particolare degli elementi.
Il Framework .Net in continua evoluzione e giunto alla versione 4.7 offre tantissime classi che fornisce allo sviluppatore una piena libertà e soprattutto di scrivere codice che superi ogni limite.
Le novità continue offerte dalle nuove versioni, sono sempre più interessanti e soprattutto forniscono al programmatore adeguati strumenti.