ASP.NET OOP-集合的 Queue 队列类操作_CollectionQueue

ASP.NET OOP-集合的 Queue 队列类操作_CollectionQueue



一、首先要在“App_Code / .cs”描述“类”所要的相关程序。


///
/// C# 面向对象程序设计集合的“Queue”队列类的操作。
/// 
/// 队列是一种“先进先出”的线性排列数据结构,
/// 集合里面的对象元素,依照加入集合的顺序,最先加入的会最先被取出,
/// 就像排队购买电影票,愈早进入队伍的人,愈早买到票离开队伍。
/// 队列被应用的地方例如,网络数据的处理,
/// 你能够利用队列依序安排系统里面数个正在进行的作业行程这类的工作。
/// 命名空间 Collection 里面的 Queue 类,直接提供对队列的支持处理。
///
/// Queue 类实践了“ICollection、IEnumerable、ICloneable”这三个界面,
/// 同时也实践了这些界面所定义的方法,
/// 其本身就是一个动态集合,所以具有与“ArrayList、Stack”类相同的特性,
/// Queue 类的大小会依照加入的对象数目而动态扩充,而其中集合容量
/// 每一次递增的量是根据等比级数因数所决定的,Queue 对象默认的大小是32
/// 而然等比级数因数是 2.0,当加入的元素其数目超过默认容量的时候,
/// 集合对象增加的容量为此级数因数乘上目前的容量。
/// 
/// *Queue 类构造函数提供了几个重载的版本,定义如下所示:
/// 
/// public Queue()
/// 
/// @这个构造函数没有接受任何的参数,其默认容量值为 32 而
///     等比级数因数是 2.0
/// 
/// public Queue(int intCapacity, float fgrowFact)
/// 
/// @其中 intCapacity 参数为指定的 Queue 类容量,
///     而 fgrowFact 参数为每一次容量扩充的等比级数因数。
///     
/// Queue 类所定义的方法说明与定义型式:
/// 
/// @Enqueue() 方法:用来将一个对象加入到指定的 Queue 集合对象。
/// 
/// void Enqueue(object obj)
/// 
/// 其中的 obj 为加入到集合中的对象。
/// 
/// @Dequeue() 方法:用来自集合中将元素取出,并且将其自集合中移除。
/// 
/// object Dequeue();
/// 
/// 这个方法会返回一个 object 类型对象。
/// 
/// @Peek() 方法:返回一个位于 Queue 集合最顶端的 object 类型对象,
///                              但是不会将其对象从集合中移除。
/// 
/// public virtual object Peek()
///


public class CollectionQueue_Cs
{

}

二、接下来就可以在“aspx.cs”操作相关“类”所建立的“对象”等属性与方法的操作。

using System;
using System.Collections;

public partial class _CollectionQueue : System.Web.UI.Page
{
    //当 Button 控件按下后所要执行的动作。
    protected void Button1_Click(object sender, EventArgs e)
    {
        //声明整数变量。
        int intFirstNumber = 10;
        //声明整数变量。
        int intSecondNumber = 20;
        //声明整数变量。
        int intThirdNumber = 30;
        //声明整数变量。
        int intForthNumber = 40;
        //声明整数变量。
        int intFifthNumber = 50;

        //声明建构对象操作实例。(队列 Queue)
        Queue objQueue = new Queue();

        //设定 Label 控件的显示文字。
        this.Label_Output.Text = "使用 Enqueue() 方法将对象加入队列:

";


        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "加入第1个数值" + intFirstNumber.ToString() + ":
";

        //使用 Push() 方法,将对象插到队列 Queue 的顶端。
        objQueue.Enqueue(intFirstNumber);

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "加入第2个数值" + intSecondNumber.ToString() + ":
";

        //使用 Push() 方法,将对象插到队列 Queue 的顶端。
        objQueue.Enqueue(intSecondNumber);

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "加入第3个数值" + intThirdNumber.ToString() + ":
";

        //使用 Push() 方法,将对象插到队列 Queue 的顶端。
        objQueue.Enqueue(intThirdNumber);

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "加入第4个数值" + intForthNumber.ToString() + ":
";

        //使用 Push() 方法,将对象插到队列 Queue 的顶端。
        objQueue.Enqueue(intForthNumber);

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "加入第5个数值" + intFifthNumber.ToString() + ":
";

        //用 Push() 方法,将对象插到队列 Queue 的顶端。
        objQueue.Enqueue(intFifthNumber);

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "

";


        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "使用 Peek() 方法从队列取得对象,并且不会移除:

";


        //使用循环执行 5 次进程。
        for (int i = 0; i < 5; i++)
        {
            //设定 Label 控件的显示文字。(返回队列 Queue 的顶端对象而不需要移除它)
            this.Label_Output.Text += objQueue.Peek() + "
";

        }

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "
";


        //设定 Label 控件的显示文字。(返回队列 Queue 的对象元素数量)
        this.Label_Output.Text += "目前队列的对象数:" + objQueue.Count + "

";


        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "使用 Dequeue() 方法从队列取得对象,并且将其移除:

";


        //使用循环执行 5 次进程。
        for (int i = 0; i < 5; i++)
        {
            //设定 Label 控件的显示文字。(返回队列 Queue 的前端对象而需要移除它)
            this.Label_Output.Text += objQueue.Dequeue() + "
";

        }

        //设定 Label 控件的显示文字。
        this.Label_Output.Text += "
";


        //设定 Label 控件的显示文字。(返回队列 Queue 的对象元素数量)
        this.Label_Output.Text += "目前队列的对象数:" + objQueue.Count + "

";


        //可以发现对象的取出顺序刚好与加入的顺序相同,所以是先进先出的排列顺序。
    }

}

三、详细 UI 部分请自行参阅源代码的.aspx 部分,源代码请见 YouTube 说明页的下载连结位置。