Queue Klas

Definitie

Vertegenwoordigt een verzameling objecten voor het eerst in eerste instantie.

public ref class Queue : System::Collections::ICollection
public ref class Queue : ICloneable, System::Collections::ICollection
public class Queue : System.Collections.ICollection
[System.Serializable]
public class Queue : ICloneable, System.Collections.ICollection
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Queue : ICloneable, System.Collections.ICollection
public class Queue : ICloneable, System.Collections.ICollection
type Queue = class
    interface ICollection
    interface IEnumerable
[<System.Serializable>]
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public Class Queue
Implements ICollection
Public Class Queue
Implements ICloneable, ICollection
Overname
Queue
Kenmerken
Implementeringen

Voorbeelden

In het volgende voorbeeld ziet u hoe u waarden maakt en toevoegt aan een Queue en hoe u de waarden kunt afdrukken.

 using System;
 using System.Collections;
 public class SamplesQueue  {

    public static void Main()  {

       // Creates and initializes a new Queue.
       Queue myQ = new Queue();
       myQ.Enqueue("Hello");
       myQ.Enqueue("World");
       myQ.Enqueue("!");

       // Displays the properties and values of the Queue.
       Console.WriteLine( "myQ" );
       Console.WriteLine( "\tCount:    {0}", myQ.Count );
       Console.Write( "\tValues:" );
       PrintValues( myQ );
    }

    public static void PrintValues( IEnumerable myCollection )  {
       foreach ( Object obj in myCollection )
          Console.Write( "    {0}", obj );
       Console.WriteLine();
    }
 }
 /*
 This code produces the following output.

 myQ
     Count:    3
     Values:    Hello    World    !
*/
Imports System.Collections

Public Class SamplesQueue

    Public Shared Sub Main()

        ' Creates and initializes a new Queue.
        Dim myQ As New Queue()
        myQ.Enqueue("Hello")
        myQ.Enqueue("World")
        myQ.Enqueue("!")

        ' Displays the properties and values of the Queue.
        Console.WriteLine("myQ")
        Console.WriteLine("    Count:    {0}", myQ.Count)
        Console.Write("    Values:")
        PrintValues(myQ)

    End Sub

    Public Shared Sub PrintValues(myCollection As IEnumerable)
        Dim obj As [Object]
        For Each obj In  myCollection
            Console.Write("    {0}", obj)
        Next obj
        Console.WriteLine()
    End Sub

End Class


' This code produces the following output.
' 
' myQ
'     Count:    3
'     Values:    Hello    World    !

Opmerkingen

Met deze klasse wordt een wachtrij geïmplementeerd als een kringmatrix. Objecten die in een object Queue zijn opgeslagen, worden aan het ene uiteinde ingevoegd en verwijderd uit de andere.

Important

We raden u niet aan om de Queue klasse te gebruiken voor nieuwe ontwikkeling. In plaats daarvan raden we u aan de algemene Queue<T> klasse te gebruiken. Zie Aangenaamde verzamelingen niet worden gebruikt op GitHub voor meer informatie.

Wachtrijen en stacks zijn handig wanneer u tijdelijke opslag nodig hebt voor informatie; Dat wil bijvoorbeeld wanneer u een element wilt verwijderen nadat u de waarde hebt opgehaald. Gebruik Queue deze optie als u toegang nodig hebt tot de gegevens in dezelfde volgorde als de gegevens die in de verzameling zijn opgeslagen. Gebruik Stack deze optie als u de gegevens in omgekeerde volgorde wilt openen. Gebruik ConcurrentQueue<T> of ConcurrentStack<T> als u toegang wilt tot de verzameling vanuit meerdere threads tegelijk.

Er kunnen drie hoofdbewerkingen worden uitgevoerd op een Queue en de bijbehorende elementen:

  • Enqueue voegt een element toe aan het einde van de Queue.

  • Dequeue verwijdert het oudste element aan het begin van de Queue.

  • Peek retourneert het oudste element dat zich aan het begin van het Queue element bevindt, maar niet uit het Queue.

De capaciteit van een Queue is het aantal elementen dat de Queue kan bevatten. Als er elementen aan een Queueworden toegevoegd, wordt de capaciteit automatisch verhoogd als vereist via herlocatie. De capaciteit kan worden verminderd door aan te roepen TrimToSize.

De groeifactor is het getal waarmee de huidige capaciteit wordt vermenigvuldigd wanneer een grotere capaciteit nodig is. De groeifactor wordt bepaald wanneer de Queue constructie wordt uitgevoerd. De standaardgroeifactor is 2,0. De capaciteit van de Queue zal altijd met ten minste vier toenemen, ongeacht de groeifactor. Een met een groeifactor van 1,0 verhoogt bijvoorbeeld Queue altijd de capaciteit met vier wanneer een grotere capaciteit nodig is.

Queue null accepteert als een geldige waarde en staat dubbele elementen toe.

Zie voor de algemene versie van deze verzameling System.Collections.Generic.Queue<T>

Constructors

Name Description
Queue()

Initialiseert een nieuw exemplaar van de Queue klasse die leeg is, heeft de standaardinitiële capaciteit en maakt gebruik van de standaardgroeifactor.

Queue(ICollection)

Initialiseert een nieuw exemplaar van de Queue klasse die elementen bevat die zijn gekopieerd uit de opgegeven verzameling, heeft dezelfde initiële capaciteit als het aantal gekopieerde elementen en gebruikt de standaardgroeifactor.

Queue(Int32, Single)

Initialiseert een nieuw exemplaar van de Queue klasse die leeg is, heeft de opgegeven initiële capaciteit en gebruikt de opgegeven groeifactor.

Queue(Int32)

Initialiseert een nieuw exemplaar van de Queue klasse die leeg is, heeft de opgegeven initiële capaciteit en gebruikt de standaardgroeifactor.

Eigenschappen

Name Description
Count

Hiermee haalt u het aantal elementen op dat is opgenomen in de Queue.

IsSynchronized

Hiermee wordt een waarde opgehaald die aangeeft of de toegang tot de Queue synchronisatie is gesynchroniseerd (thread safe).

SyncRoot

Hiermee haalt u een object op dat kan worden gebruikt om de toegang tot het Queueobject te synchroniseren.

Methoden

Name Description
Clear()

Hiermee verwijdert u alle objecten uit de Queue.

Clone()

Maakt een ondiepe kopie van de Queue.

Contains(Object)

Bepaalt of een element zich in de Queue.

CopyTo(Array, Int32)

Kopieert de Queue elementen naar een bestaande eendimensionale Array, beginnend bij de opgegeven matrixindex.

Dequeue()

Verwijdert en retourneert het object aan het begin van de Queue.

Enqueue(Object)

Hiermee voegt u een object toe aan het einde van de Queue.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetEnumerator()

Retourneert een enumerator die door de Queue.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Peek()

Retourneert het object aan het begin van het Queue object zonder het te verwijderen.

Synchronized(Queue)

Retourneert een nieuw Queue dat de oorspronkelijke wachtrij verpakt en thread veilig is.

ToArray()

Kopieert de Queue elementen naar een nieuwe matrix.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
TrimToSize()

Hiermee stelt u de capaciteit in op het werkelijke aantal elementen in de Queue.

Extensiemethoden

Name Description
AsParallel(IEnumerable)

Hiermee schakelt u parallelle uitvoering van een query in.

AsQueryable(IEnumerable)

Converteert een IEnumerable naar een IQueryable.

Cast<TResult>(IEnumerable)

Cast de elementen van een IEnumerable naar het opgegeven type.

OfType<TResult>(IEnumerable)

Hiermee filtert u de elementen van een IEnumerable op basis van een opgegeven type.

Van toepassing op

Veiligheid thread

Openbare statische (Shared in Visual Basic) leden van dit type zijn thread-veilig. Exemplaarleden zijn niet gegarandeerd thread-safe.

Om de veiligheid van de Queuedraad te garanderen, moeten alle bewerkingen worden uitgevoerd via de wrapper die door de Synchronized(Queue) methode wordt geretourneerd.

Het inventariseren via een verzameling is intrinsiek geen thread-veilige procedure. Zelfs wanneer een verzameling wordt gesynchroniseerd, kunnen andere threads de verzameling nog steeds wijzigen, waardoor de enumerator een uitzondering genereert. Om de veiligheid van threads tijdens de inventarisatie te garanderen, kunt u de verzameling vergrendelen tijdens de volledige inventarisatie of de uitzonderingen ondervangen die het gevolg zijn van wijzigingen die door andere threads zijn aangebracht.

Zie ook