<%@ 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");
PersonList people = new PersonList();
people.Add(scott);
people.Add(bill);
people.Add(srini);
foreach (Person p in people)
{
Response.Write(p.FullName + "<BR/>");
}
for (int i = 0; i < people.Count; i++)
{
Response.Write(people[i].FullName + "<BR/>");
}
}
}
public class PersonList : System.Collections.IEnumerable
{
private ArrayList innerList = new ArrayList();
public void Add(Person aPerson)
{
innerList.Add(aPerson);
}
public void Remove(Person aPerson)
{
innerList.Remove(aPerson);
}
public int Count
{
get { return innerList.Count; }
}
// Get/set element at given index
public Person this[int index]
{
get { return (Person)innerList[index]; }
set { innerList[index] = value; }
}
public IEnumerator GetEnumerator()
{
return innerList.GetEnumerator();
}
}
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.CompareTo(object obj)
{
Person p2 = obj as Person;
if (p2 == null) throw new ArgumentException("Object is not a Person!");
int lastNameResult = this.LastName.CompareTo(p2.LastName);
if (lastNameResult == 0)
{
int firstNameResult = this.FirstName.CompareTo(p2.FirstName);
return firstNameResult;
}
else
{
return lastNameResult;
}
}
}