ASP.NET Tutorial/Collections/Dictionary

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Using a generic Dictionary instead of a non-generic 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;
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 + "<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;
        }
    }
}


Using a generic Dictionary instead of a non-generic 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 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 & "<BR/>")
        found = peopleHashtable("be")
        Response.Write(found.FullName & "<BR/>")
        found = peopleHashtable("sh")
        Response.Write(found.FullName & "<BR/>")
    End Sub
End Class