English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Queue è un tipo di raccolta speciale che memorizza gli elementi in modo FIFO (prima nell'ingresso, poi nell'uscita), contrariamente a Stack <T> raccolta. Contiene gli elementi nell'ordine di aggiunta. C# include Queue<T> generico e raccolta Queue non generica. Si consiglia di utilizzare la raccolta Queue<T> generica.
Queue<T> è una raccolta FIFO (prima nell'ingresso, poi nell'uscita).
Si trova nello spazio dei nomi System.Collection.Generic.
Queue<T> può contenere elementi di tipo specificato. Fornisce la verifica del tipo a compile-time e non esegue boxing/unboxing, poiché è generico.
Puoi aggiungere elementi utilizzando il metodo Enqueue(). Non è possibile utilizzare la sintassi di inizializzazione della raccolta (collection-initializer).
Puoi recuperare gli elementi utilizzando i metodi Dequeue() e Peek(). Non supporta gli indici.
La seguente immagine illustra la raccolta Queue:
Puoi creare l'oggetto specificando il tipo di elemento del tipo di parametro specificato per Queue<T>. L'esempio seguente utilizza il metodo Enqueue () per creare e aggiungere elementi in Queue <T>. La raccolta Queue permette valori null (per i tipi di riferimento) e valori duplicati.
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); // Stampa 1234
Proprietà | Uso |
---|---|
Count | Restituire il numero totale di elementi nella coda. |
Metodo | Uso |
---|---|
Enqueue(T) | Aggiungere un elemento alla coda. |
Dequeue | Restituire un elemento dall'inizio della coda e rimuoverlo. |
Peek(T) | Restituire il primo elemento della coda senza rimuoverlo. |
Contains(T) | Controllare se un elemento è nella coda |
Clear() | Eliminare tutti gli elementi dalla coda. |
I metodi Dequeue() e Peek() vengono utilizzati per recuperare l'elemento primo nella raccolta della coda. Dequeue() rimuove e restituisce il primo elemento della coda, poiché la coda è un'istanza di storage FIFO. Chiamare il metodo Dequeue() su una coda vuota solleva un'eccezione InvalidOperation. Pertanto, prima di chiamare la coda, verificare sempre se il numero totale di elementi è maggiore di zero.
Queue<string> strQ = new Queue<string>(); strQ.Enqueue("H"); strQ.Enqueue("e"); strQ.Enqueue("l"); strQ.Enqueue("l"); strQ.Enqueue("o"); Console.WriteLine("Numero totale di elementi: {0}", strQ.Count); // Output 5 while (strQ.Count > 0){ Console.WriteLine(strQ.Dequeue()); // Output Hello } Console.WriteLine("Numero totale di elementi: {0}", strQ.Count); // Output 0
Il metodo Peek() restituisce sempre il primo elemento della raccolta della coda senza rimuoverlo. Chiamare questo metodo su una coda vuota solleva un'eccezione di runtime InvalidOperationException.
Queue<string> strQ = new Queue<string>(); strQ.Enqueue("H"); strQ.Enqueue("e"); strQ.Enqueue("l"); strQ.Enqueue("l"); strQ.Enqueue("o"); Console.WriteLine("Numero totale di elementi: {0}", strQ.Count); // Output 5 if(strQ.Count > 0){ Console.WriteLine(strQ.Peek()); // Output H Console.WriteLine(strQ.Peek()); // Output H } Console.WriteLine("Numero totale di elementi: {0}", strQ.Count); // Output 0
Il metodo Contains() verifica se l'elemento esiste nella coda. Se l'elemento specificato esiste, restituisce true, altrimenti restituisce false.
Contains() firma:
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