ASP.NET Tutorial/Collections/Hashtable
Содержание
- 1 Hashtable collection
- 2 Retrieving Person objects from a Hashtable (C#)
- 3 Retrieving Person objects from a Hashtable (VB)
- 4 Using For Each with a Hashtable"s default IEnumerator implementation (C#)
- 5 Using For Each with a Hashtable"s default IEnumerator implementation (VB)
- 6 Using For Each with a Hashtable"s Keys and Values member collections (C#)
- 7 Using For Each with a Hashtable"s Keys and Values member collections (VB)
Hashtable collection
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="UsingHashtable" %>
<!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 id="Head1" runat="server">
<title>Hashtable Example</title>
</head>
<body>
<form id="form1" runat="server">
<div id="container">
<h1>Hashtable Example</h1>
<asp:ListBox ID="lboxCustomers" runat="server"
DataTextField="Value"
DataValueField="Key" />
</div>
</form>
</body>
</html>
File: Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public abstract class AbstractEntity
{
private string _id;
public AbstractEntity(string id)
{
_id = id;
}
public string Id
{
get { return _id; }
set { _id = value; }
}
public abstract bool IsValid
{
get;
}
}
public class Customer: AbstractEntity
{
// data members
private string _firstName;
private string _lastName;
private string _phone;
public Customer(string id, string firstName, string lastName, string phone): base(id)
{
_firstName = firstName;
_lastName = lastName;
_phone = phone;
}
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
public string Phone
{
get { return _phone; }
set { _phone = value; }
}
public string Name
{
get { return LastName + ", " + FirstName; }
}
public override bool IsValid
{
get
{
if (Id.Length > 0 && LastName.Length > 0)
return true;
else
return false;
}
}
public override string ToString()
{
return Id + "," + Name + "," + Phone;
}
}
public partial class UsingHashtable : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Customer c1 = new Customer("1", "A", "AA", "123-4567");
Customer c2 = new Customer("2", "B", "BB", "123-7823");
Customer c3 = new Customer("3", "C", "CC", "123-6383");
Hashtable table = new Hashtable();
table.Add(c1.Id, c1);
table.Add(c2.Id, c2);
table.Add(c3.Id, c3);
lboxCustomers.DataSource = table;
lboxCustomers.DataBind();
}
}
Retrieving Person objects from a Hashtable (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");
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 + "<BR/>");
found = (Person)peopleHashtable["be"];
Response.Write(found.FullName + "<BR/>");
found = (Person)peopleHashtable["sh"];
Response.Write(found.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;
}
}
}
Retrieving Person objects from a Hashtable (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 peopleHashtable As New Hashtable()
peopleHashtable.Add("sh", scott)
peopleHashtable.Add("be", bill)
peopleHashtable.Add("ss", srini)
Dim found As Person = CType(peopleHashtable("sh"), Person)
Response.Write(found.FullName & "<BR/>")
found = CType(peopleHashtable("be"), Person)
Response.Write(found.FullName & "<BR/>")
found = CType(peopleHashtable("sh"), Person)
Response.Write(found.FullName & "<BR/>")
End Sub
End Class
Using For Each with a Hashtable"s default IEnumerator implementation (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");
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 + "<BR/>");
found = (Person)peopleHashtable["be"];
Response.Write(found.FullName + "<BR/>");
found = (Person)peopleHashtable["sh"];
Response.Write(found.FullName + "<BR/>");
foreach (DictionaryEntry de in peopleHashtable)
{
Response.Write(de.Key.ToString() + ":" + ((Person)de.Value).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;
}
}
}
Using For Each with a Hashtable"s default IEnumerator implementation (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 peopleHashtable As New Hashtable()
peopleHashtable.Add("sh", scott)
peopleHashtable.Add("be", bill)
peopleHashtable.Add("ss", srini)
Dim found As Person = CType(peopleHashtable("sh"), Person)
Response.Write(found.FullName & "<BR/>")
found = CType(peopleHashtable("be"), Person)
Response.Write(found.FullName & "<BR/>")
found = CType(peopleHashtable("sh"), Person)
Response.Write(found.FullName & "<BR/>")
For Each de As DictionaryEntry In peopleHashtable
Response.Write(de.Key.ToString() & ":" & CType(de.Value, Person).FullName & _
"<BR/>")
Next
End Sub
End Class
Using For Each with a Hashtable"s Keys and Values member collections (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");
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 + "<BR/>");
found = (Person)peopleHashtable["be"];
Response.Write(found.FullName + "<BR/>");
found = (Person)peopleHashtable["sh"];
Response.Write(found.FullName + "<BR/>");
foreach (string s in peopleHashtable.Keys)
{
Response.Write(s + "<BR/>");
}
foreach (Person p in peopleHashtable.Values)
{
Response.Write(p.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;
}
}
}
Using For Each with a Hashtable"s Keys and Values member collections (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 peopleHashtable As New Hashtable()
peopleHashtable.Add("sh", scott)
peopleHashtable.Add("be", bill)
peopleHashtable.Add("ss", srini)
Dim found As Person = CType(peopleHashtable("sh"), Person)
Response.Write(found.FullName & "<BR/>")
found = CType(peopleHashtable("be"), Person)
Response.Write(found.FullName & "<BR/>")
found = CType(peopleHashtable("sh"), Person)
Response.Write(found.FullName & "<BR/>")
For Each s As String In peopleHashtable.Keys
Response.Write(s & "<BR/>")
Next
For Each p As Person In peopleHashtable.Values
Response.Write(p.FullName & "<BR/>")
Next
End Sub
End Class