ASP.NET Tutorial/Collections/Stack
Pushing, popping, and peeking Person objects in a Stack (C#)
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
</form>
</body> </html> File: Default.aspx.cs using System; using System.Collections; public partial class _Default : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { Person scott = new Person("A", "B"); Person bill = new Person("C", "D"); Person srini = new Person("E", "F"); Stack peopleStack = new Stack(); peopleStack.Push(scott); peopleStack.Push(bill); peopleStack.Push(srini); Person x = (Person)peopleStack.Pop(); Response.Write(x.FullName + "
"); x = (Person)peopleStack.Pop(); Response.Write(x.FullName + "
"); x = (Person)peopleStack.Peek(); //Peek, not Pop Response.Write(x.FullName + "
"); x = (Person)peopleStack.Pop(); Response.Write(x.FullName + "
"); }
} public class Person : IComparable {
string FirstName; string LastName; public Person(string first, string last) { FirstName = first; LastName = last; } public string FullName { get { return FirstName + " " + LastName; } } int IComparable.rupareTo(object obj) { Person p2 = obj as Person; if (p2 == null) throw new ArgumentException("Object is not a Person!"); int lastNameResult = this.LastName.rupareTo(p2.LastName); if (lastNameResult == 0) { int firstNameResult = this.FirstName.rupareTo(p2.FirstName); return firstNameResult; } else { return lastNameResult; } }
}</source>
Pushing, popping, and peeking Person objects in a Stack (VB)
<source lang="csharp">
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
</form>
</body> </html> File: Default.aspx.vb Imports System Imports System.Collections Imports Microsoft.VisualBasic Public Class Person
Implements IComparable Dim FirstName As String Dim LastName As String Public Sub New(ByVal First As String, ByVal Last As String) FirstName = First LastName = Last End Sub Public ReadOnly Property FullName() As String Get Return FirstName & " " & LastName End Get End Property Public Function CompareTo(ByVal obj As Object) _ As Integer Implements IComparable.rupareTo If Not TypeOf (obj) Is Person Then Throw New ArgumentException("Object is not a Person!") End If Dim p2 As Person = CType(obj, Person) Dim lastNameResult As Integer = Me.LastName.rupareTo(p2.LastName) If lastNameResult = 0 Then Dim firstNameResult As Integer = Me.FirstName.rupareTo(p2.FirstName) Return firstNameResult Else Return lastNameResult End If End Function
End Class Partial Class _Default
Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load Dim scott As New Person("A", "B") Dim bill As New Person("C", "D") Dim srini As New Person("E", "F") Dim peopleStack As New Stack() peopleStack.Push(scott) peopleStack.Push(bill) peopleStack.Push(srini) Dim x As Person = CType(peopleStack.Pop(), Person) Response.Write(x.FullName & "
") x = CType(peopleStack.Pop(), Person) Response.Write(x.FullName & "
") x = CType(peopleStack.Peek(), Person) "Peek, not Pop Response.Write(x.FullName & "
") x = CType(peopleStack.Pop(), Person) Response.Write(x.FullName & "
") End Sub
End Class</source>