C# - Queue tárolási osztály

forráskód letöltése
A Queue egy olyan osztály mely képes Object típusú adatok tárolására. Mellékelt példában ennek felhasználását mutatjuk be.
A Form deklarációjánál hozzuk létre qe névvel a saját a Queue osztályunkat, melyet a példa során felhasználunk.
private Queue qe = new Queue();
Új elemet eltárolni egy ilyen listába az Enqueue függvénnyel lehet.
      protected void button1_Click (object sender, System.EventArgs e)
      {
        qe.Enqueue(textBox1.Text);
        UpdateLabel1();
      }
A lista elemeinek számát a Count property árulja el. Ehhez egy saját belső függvényt készítünk, mely kiírja ezt az értéket egy Label komponensre.
      private void UpdateLabel1()
      {
        label1.Text = qe.Count.ToString();
      }
A listára felvett elemekről kérhetünk egy tömböt is a ToArray függvényhívással. Ilyenkor egy Object elemeket tartalmazó tömböt kapunk vissza, melyen egy foreach ciklussal egyszerűen végigmehetünk.
      protected void button2_Click (object sender, System.EventArgs e)
      {
        Object[] array = qe.ToArray();
        listBox1.Items.Clear();
        foreach (Object s in array)
        {
          listBox1.Items.Add(s.ToString());
        }
      }
Egy elem kiolvasásához és a listáról való eltávolításához a Dequeue függvényt kell meghívnunk. Ez a függvény a listára elsőként elhelyezett elemet adja vissza függetlenül attól, hogy ezután hány új elem került még a listára.
      protected void button3_Click (object sender, System.EventArgs e)
      {
        if (qe.Count > 0)
        {
          label2.Text = qe.Dequeue().ToString();
          UpdateLabel1();
        }
      }
Van lehetőségünk a lista első elemének elérésére oly módon is, hogy az ne kerüljön törlésre. Ekkor a Peek függvényt kell használnunk.
      protected void button5_Click (object sender, System.EventArgs e)
      {
        if (qe.Count > 0)
        {
          label3.Text = qe.Peek().ToString();
          UpdateLabel1();
        }
      }
A lista teljes törlését a Clear függvény hívásával érhetjük el.
    protected void button4_Click (object sender, System.EventArgs e)
      {
        qe.Clear();
        UpdateLabel1();
      }