Queue Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine First-In-First-Out-Auflistung von Objekten dar.
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
- Vererbung
-
Queue
- Attribute
- Implementiert
Beispiele
Das folgende Beispiel zeigt, wie Werte erstellt und hinzugefügt Queue werden, und wie die Werte gedruckt werden.
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 !
Hinweise
Diese Klasse implementiert eine Warteschlange als kreisförmiges Array. In einem Queue Objekt gespeicherte Objekte werden an einem Ende eingefügt und aus dem anderen entfernt.
Important
Es wird nicht empfohlen, die Queue Klasse für die neue Entwicklung zu verwenden. Stattdessen wird empfohlen, die generische Queue<T> Klasse zu verwenden. Weitere Informationen finden Sie unter "Nicht generische Sammlungen", die nicht auf GitHub verwendet werden sollten .
Warteschlangen und Stapel sind nützlich, wenn Sie temporären Speicher für Informationen benötigen. das heißt, wenn Sie ein Element nach dem Abrufen seines Werts verwerfen möchten. Verwenden Sie Queue diese Verwendung, wenn Sie auf die Informationen in derselben Reihenfolge zugreifen müssen, in der sie in der Sammlung gespeichert ist. Verwenden Sie Stack diesen Vorgang, wenn Sie in umgekehrter Reihenfolge auf die Informationen zugreifen müssen. ConcurrentQueue<T> Verwenden Oder ConcurrentStack<T> wenn Sie gleichzeitig auf die Sammlung von mehreren Threads zugreifen müssen.
Drei Hauptvorgänge können für ein Queue und die zugehörigen Elemente ausgeführt werden:
Peek gibt das älteste Element zurück, das sich am Anfang des Queue Elements befindet, entfernt es jedoch nicht aus dem Queue.
Die Kapazität eines Elements Queue ist die Anzahl der Elemente, die aufbewahrt Queue werden können. Wenn Elemente zu einem QueueElement hinzugefügt werden, wird die Kapazität bei Bedarf durch Umschichtung automatisch erhöht. Die Kapazität kann durch Aufrufe TrimToSizeverringert werden.
Der Wachstumsfaktor ist die Zahl, mit der die aktuelle Kapazität multipliziert wird, wenn eine größere Kapazität erforderlich ist. Der Wachstumsfaktor wird bestimmt, wenn der Queue Aufbau erfolgt. Der Standardwachstumsfaktor ist 2,0. Die Kapazität der Queue Wird immer um mindestens ein Minimum von vier erhöht, unabhängig vom Wachstumsfaktor. Beispielsweise wird ein Queue Wachstumsfaktor von 1,0 immer um vier erhöht, wenn eine größere Kapazität erforderlich ist.
Queue akzeptiert null als gültigen Wert und lässt doppelte Elemente zu.
Die generische Version dieser Sammlung finden Sie unter System.Collections.Generic.Queue<T>
Konstruktoren
| Name | Beschreibung |
|---|---|
| Queue() |
Initialisiert eine neue Instanz der klasse, die Queue leer ist, hat die Standard-Anfangskapazität und verwendet den Standardwachstumsfaktor. |
| Queue(ICollection) |
Initialisiert eine neue Instanz der Queue Klasse, die Elemente enthält, die aus der angegebenen Auflistung kopiert wurden, hat die gleiche Anfangskapazität wie die Anzahl der kopierten Elemente und verwendet den Standardwachstumsfaktor. |
| Queue(Int32, Single) |
Initialisiert eine neue Instanz der klasse, die Queue leer ist, die angegebene Anfangskapazität hat und den angegebenen Wachstumsfaktor verwendet. |
| Queue(Int32) |
Initialisiert eine neue Instanz der Klasse, die Queue leer ist, die angegebene Anfangskapazität aufweist und den Standardwachstumsfaktor verwendet. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Count |
Ruft die Anzahl der Elemente ab, die in der Queue. |
| IsSynchronized |
Ruft einen Wert ab, der angibt, ob der Zugriff auf die Queue synchronisiert wird (Threadsicher). |
| SyncRoot |
Ruft ein Objekt ab, das zum Synchronisieren des Zugriffs auf die Queueverwendet werden kann. |
Methoden
| Name | Beschreibung |
|---|---|
| Clear() |
Entfernt alle Objekte aus dem Queue. |
| Clone() |
Erstellt eine flache Kopie der .Queue |
| Contains(Object) |
Bestimmt, ob sich ein Element in der Queue. |
| CopyTo(Array, Int32) |
Kopiert die Queue Elemente in einen vorhandenen eindimensionalen Array, beginnend am angegebenen Arrayindex. |
| Dequeue() |
Entfernt und gibt das Objekt am Anfang der .Queue |
| Enqueue(Object) |
Fügt ein Objekt am Ende der .Queue |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetEnumerator() |
Gibt einen Enumerator zurück, der durch die QueueEnumerator durchläuft. |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| Peek() |
Gibt das Objekt am Anfang des Queue Objekts zurück, ohne es zu entfernen. |
| Synchronized(Queue) |
Gibt eine neue Queue , die die ursprüngliche Warteschlange umschließt und threadsicher ist. |
| ToArray() |
Kopiert die Queue Elemente in ein neues Array. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
| TrimToSize() |
Legt die Kapazität auf die tatsächliche Anzahl der Elemente in der Queue. |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| AsParallel(IEnumerable) |
Aktiviert die Parallelisierung einer Abfrage. |
| AsQueryable(IEnumerable) |
Wandelt eine IEnumerable in eine IQueryableum. |
| Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um. |
| OfType<TResult>(IEnumerable) |
Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ. |
Gilt für:
Threadsicherheit
Öffentliche statische Elemente (Shared in Visual Basic) dieses Typs sind threadsicher. Instanzenmitglieder sind nicht garantiert threadsicher.
Um die Threadsicherheit des Threads Queuezu gewährleisten, müssen alle Vorgänge über den wrapper erfolgen, der von der Synchronized(Queue) Methode zurückgegeben wird.
Das Aufzählen durch eine Sammlung ist in erster Linie keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, können andere Threads die Auflistung weiterhin ändern, wodurch der Enumerator eine Ausnahme auslöst. Um die Threadsicherheit während der Enumeration zu gewährleisten, können Sie die Auflistung entweder während der gesamten Enumeration sperren oder die Ausnahmen erfassen, die sich aus Änderungen ergeben, die von anderen Threads vorgenommen wurden.