Queue Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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:
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.