ASP.NET Tutorial/Collections/Stack

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

Pushing, popping, and peeking Person objects in a Stack (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; 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 + "
"); x = (Person)peopleStack.Pop(); Response.Write(x.FullName + "
"); x = (Person)peopleStack.Peek(); //Peek, not Pop Response.Write(x.FullName + "
"); x = (Person)peopleStack.Pop(); Response.Write(x.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>


Pushing, popping, and peeking Person objects in a Stack (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 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 & "
") x = CType(peopleStack.Pop(), Person) Response.Write(x.FullName & "
") x = CType(peopleStack.Peek(), Person) "Peek, not Pop Response.Write(x.FullName & "
") x = CType(peopleStack.Pop(), Person) Response.Write(x.FullName & "
") End Sub

End Class</source>