English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Queue is a special type of collection that stores elements in a FIFO (First In, First Out) manner, which is completely opposite to the Stack <T> collection. It contains elements in the order they were added. C# includes both generic Queue<T> and non-generic Queue collections. It is recommended to use the generic Queue<T> collection.
Queue<T> is a FIFO (First In, First Out) collection.
It is under the System.Collection.Generic namespace.
Queue<T> can contain elements of a specified type. It provides compile-time type checking and does not perform boxing/unboxing because it is generic.
Elements can be added using the Enqueue() method. It is not possible to use collection initialization(collection-initializer syntax.
Elements can be retrieved using the Dequeue() and Peek() methods. It does not support indexers.
Das folgende Diagramm zeigt die Queue-Sammlung:
Sie können Objekte erstellen, indem Sie für den Typ der von Queue<T> gespeicherten Elemente einen Typparameter angeben. Der folgende Beispiel verwendet die Enqueue()-Methode, um Elemente in Queue<T> zu erstellen und hinzuzufügen. Die Queue-Sammlung ermöglicht null (für Referenztypen) und wiederholte Werte.
Queue<int> callerIds = new Queue<int>(); callerIds.Enqueue(1); callerIds.Enqueue(2); callerIds.Enqueue(3); callerIds.Enqueue(4); foreach(var id in callerIds) Console.Write(id); //Drucken1234
Eigenschaft | Verwendung |
---|---|
Count | Gibt die Gesamtzahl der Elemente in der Warteschlange zurück. |
Methode | Verwendung |
---|---|
Enqueue(T) | Ein Element zur Warteschlange hinzufügen. |
Dequeue | Ein Element vom Anfang der Warteschlange zurückgeben und es aus der Warteschlange löschen. |
Peek(T) | Das erste Element der Warteschlange zurückgeben, ohne es zu löschen. |
Contains(T) | Überprüfen, ob ein Element in der Warteschlange vorhanden ist |
Clear() | Alle Elemente aus der Warteschlange löschen. |
Die Dequeue() und Peek()-Methoden werden verwendet, um den ersten Element in der Sammlung der Warteschlange abzurufen. Dequeue() entfernt und gibt das erste Element zurück, da die Elemente in einer FIFO-Reihenfolge in der Warteschlange gespeichert werden. Der Aufruf der Dequeue()-Methode auf einer leeren Warteschlange führt zu einer InvalidOperation-Exception. Daher sollten Sie immer überprüfen, ob die Anzahl der Elemente in der Warteschlange größer als null ist, bevor Sie die Warteschlange aufrufen.
Queue<string> strQ = new Queue<string>(); strQ.Enqueue("H"); strQ.Enqueue("e"); strQ.Enqueue("l"); strQ.Enqueue("l"); strQ.Enqueue("o"); Console.WriteLine("Elementanzahl: {0}", strQ.Count); //Ausgabe 5 while(strQ.Count > 0){ Console.WriteLine(strQ.Dequeue()); //Ausgabe Hello } Console.WriteLine("Elementanzahl: {0}", strQ.Count); //Ausgabe 0
Die Peek()-Methode gibt immer das erste Element der Sammlung der Warteschlange zurück und löscht es nicht. Der Aufruf dieser Methode auf einer leeren Warteschlange führt zu einer Laufzeitexception InvalidOperationException.
Queue<string> strQ = new Queue<string>(); strQ.Enqueue("H"); strQ.Enqueue("e"); strQ.Enqueue("l"); strQ.Enqueue("l"); strQ.Enqueue("o"); Console.WriteLine("Elementanzahl: {0}", strQ.Count); //Ausgabe 5 if(strQ.Count > 0){ Console.WriteLine(strQ.Peek()); //Ausgabe H Console.WriteLine(strQ.Peek()); //Ausgabe H } Console.WriteLine("Elementanzahl: {0}", strQ.Count); //Ausgabe 0
Die Contains() Methode überprüft, ob ein Element in der Warteschlange existiert. Wenn das angegebene Element existiert, wird true zurückgegeben,否则 wird false zurückgegeben.
Contains() Signatur:
bool Contains(object obj);
Queue<int> callerIds = new Queue<int>(); callerIds.Enqueue(1); callerIds.Enqueue(2); callerIds.Enqueue(3); callerIds.Enqueue(4); callerIds.Contains(2); //true callerIds.Contains(10); //false