Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

22.4. System.Collections.Queue

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

22.4.1. System.Collections.Queue

Vergelijkbaar met de Stack hebben we het Queue type (of voluit het System.Collections.Queue type).

Hierbij worden de elementen toegevoegd en verwijderd volgens het "FIFO" principe (First In First Out).

De belangrijkste acties die men kan ondernemen met een Queue zijn :

- het toevoegen van een element via de Enqueue(value As Object) method
- het verwijderen en opvragen van een element via de Dequeue() As Object method

In onderstaand voorbeeld worden enkele members uit de Queue klasse gedemonstreerd.
Visual Basic 2012 Broncode - Codevoorbeeld 528
Class Example
    Public Shared Sub Main()
        Dim queue1 As New System.Collections.Queue                         ' (1)
        '
        Console.WriteLine(queue1.Count)          ' 0
        '
        queue1.Enqueue(1)                                                  ' (2)
        queue1.Enqueue("2"c)
        queue1.Enqueue("three")
        Console.WriteLine(queue1.Count)          ' 3
        PrintQueue(queue1)                       ' " 1 - 2 - three - "
        '
        Console.WriteLine(queue1.Contains("2"c)) ' True                      (3)
        '
        Console.WriteLine(queue1.Dequeue())      ' 1                         (4)
        PrintQueue(queue1)                       ' " 2 - three - "
        Console.WriteLine(queue1.Count)          ' 2
        '
        Console.WriteLine(queue1.Peek())         ' "2"c                      (5)
        Console.WriteLine(queue1.Count)          ' 2
        '
        Console.WriteLine(queue1.Dequeue())      ' "2"c
        PrintQueue(queue1)                       ' " three - "
        Console.WriteLine(queue1.Count)          ' 1
        '
        Console.ReadLine()
    End Sub
    Public Shared Sub PrintQueue(ByVal queue As Collections.Queue)
        For Each element As Object In queue                                ' (6)
            If element IsNot Nothing Then
                Console.Write(element.ToString() & " - ")
            End If
        Next
        Console.WriteLine()
    End Sub
End Class
Console Application Output
0
3
1 - 2 - three -
True
1
2 - three -
2
2
2
2
three -
1
(1) : Ook de Queue instanties hebben geen initiële capaciteit.

(2) : De Enqueue() method is bruikbaar om elementen van eender welk datatype toe te voegen aan de Queue instantie.

(3) : De Contains() method maakt gebruik van de Equals method van de elementen om die te vergelijken met de parameter.

(4) : De Dequeue() method verwijderd het eerst toegevoegde element en levert het eerst toegevoegde element in Object vorm op.  Dit is dus een method die zowel een waarde oplevert (een "query") als een method die de toestand van het object wijzigt (een "command").  Dit druist in tegen het "command/query separation pattern" die aanraadt dat een boodschap/method ofwel moet gebruikt worden om de toestand van een object op te vragen ( "query") ofwel moet dienen om de toestand van een object te wijzigen ( "command"), maar niet beide.

(5) : De Peek() method zal net als de Dequeue() method het eerst toegevoegde element in Object vorm opleveren, maar zal in tegenstelling met de Dequeue() method het eerst toegevoegde element niet verwijderen.

(6) : Ook de elementen van een Queue instantie zijn benaderbaar met een For Each iteratie.  De elementen worden hierbij overlopen in dezelfde volgorde als ze zouden verwijderd ("gedequeued") worden uit de Queue.

22.4.2. Typesafe System.Collections.Generic.Queue(Of T)

Indien het type van de elementen van de Queue vastligt, kan men beter een typesafe variant van Queue gebruiken, namelijk Queue(Of T).

Voor meer details over dergelijke generieke collectietypes en typesafe collecties, zie de desbetreffende topics.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.