ASP.NET Tutorial/Collections/Dictionary
Using a generic Dictionary instead of a non-generic Hashtable (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; using System.Collections.Generic; public partial class _Default : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { Person scott = new Person("S", "A"); Person bill = new Person("B", "B"); Person srini = new Person("S", "C"); Hashtable peopleHashtable = new Hashtable(); peopleHashtable.Add("sh", scott); peopleHashtable.Add("be", bill); peopleHashtable.Add("ss", srini); Person found = (Person)peopleHashtable["sh"]; Response.Write(found.FullName + "
"); found = (Person)peopleHashtable["be"]; Response.Write(found.FullName + "
"); found = (Person)peopleHashtable["sh"]; Response.Write(found.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>
Using a generic Dictionary instead of a non-generic Hashtable (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 System.Collections.Generic 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", "F") Dim bill As New Person("B", "E") Dim srini As New Person("C", "D") Dim peopleHashtable As New Dictionary(Of String, Person) peopleHashtable.Add("sh", scott) peopleHashtable.Add("be", bill) peopleHashtable.Add("ss", srini) Dim found As Person = peopleHashtable("sh") Response.Write(found.FullName & "
") found = peopleHashtable("be") Response.Write(found.FullName & "
") found = peopleHashtable("sh") Response.Write(found.FullName & "
") End Sub
End Class</source>