ASP.NET Tutorial/Collections/Stack
Pushing, popping, and peeking Person objects in a Stack (C#)
<%@ 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">
<div>
</div>
</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 + "<BR/>");
x = (Person)peopleStack.Pop();
Response.Write(x.FullName + "<BR/>");
x = (Person)peopleStack.Peek(); //Peek, not Pop
Response.Write(x.FullName + "<BR/>");
x = (Person)peopleStack.Pop();
Response.Write(x.FullName + "<BR/>");
}
}
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;
}
}
}
Pushing, popping, and peeking Person objects in a Stack (VB)
<%@ 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">
<div>
</div>
</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 & "<BR/>")
x = CType(peopleStack.Pop(), Person)
Response.Write(x.FullName & "<BR/>")
x = CType(peopleStack.Peek(), Person) "Peek, not Pop
Response.Write(x.FullName & "<BR/>")
x = CType(peopleStack.Pop(), Person)
Response.Write(x.FullName & "<BR/>")
End Sub
End Class