Queue Classe

Definizione

Rappresenta una raccolta di oggetti first-in first-out.

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
Ereditarietà
Queue
Attributi
Implementazioni

Esempio

Nell'esempio seguente viene illustrato come creare e aggiungere valori a e Queue come stampare i relativi valori.

 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    !

Commenti

Questa classe implementa una coda come matrice circolare. Gli oggetti archiviati in un Queue oggetto vengono inseriti in un'estremità e rimossi dall'altro.

Importante

Non è consigliabile usare la Queue classe per il nuovo sviluppo. È invece consigliabile usare la classe generica Queue<T>. Per altre informazioni, vedere Raccolte non generiche che non devono essere usate in GitHub.

Le code e gli stack sono utili quando è necessaria l'archiviazione temporanea per informazioni; ovvero, quando si potrebbe voler rimuovere un elemento dopo il recupero del relativo valore. Utilizzare Queue se è necessario accedere alle informazioni nello stesso ordine in cui sono archiviate nella raccolta. Usare Stack se è necessario accedere alle informazioni in ordine inverso. Usare ConcurrentQueue<T> o ConcurrentStack<T> se è necessario accedere alla raccolta da più thread contemporaneamente.

È possibile eseguire tre operazioni principali su un Queue oggetto e sui relativi elementi:

  • Enqueue aggiunge un elemento alla fine dell'oggetto Queue.

  • Dequeue rimuove l'elemento meno recente dall'inizio di Queue.

  • Peek restituisce l'elemento meno recente che si trova all'inizio di Queue ma non lo rimuove da Queue.

La capacità di un Queue oggetto è il numero di elementi che può Queue contenere. Man mano che gli elementi vengono aggiunti a un Queueoggetto , la capacità viene aumentata automaticamente in base alle esigenze tramite la riallocazione. La capacità può essere ridotta chiamando TrimToSize.

Il fattore di crescita è il numero in base al quale la capacità corrente viene moltiplicata quando è necessaria una capacità maggiore. Il fattore di crescita viene determinato quando viene costruito .Queue Il fattore di crescita predefinito è 2,0. La capacità dell'oggetto Queue aumenterà sempre di almeno quattro, indipendentemente dal fattore di crescita. Ad esempio, un Queue con un fattore di crescita pari a 1,0 aumenterà sempre di capacità di quattro quando è necessaria una capacità maggiore.

Queue accetta null come valore valido e consente elementi duplicati.

Per la versione generica di questa raccolta, vedere System.Collections.Generic.Queue<T>

Costruttori

Nome Descrizione
Queue()

Inizializza una nuova istanza della Queue classe vuota, ha la capacità iniziale predefinita e usa il fattore di crescita predefinito.

Queue(ICollection)

Inizializza una nuova istanza della Queue classe che contiene elementi copiati dalla raccolta specificata, ha la stessa capacità iniziale del numero di elementi copiati e usa il fattore di crescita predefinito.

Queue(Int32, Single)

Inizializza una nuova istanza della Queue classe vuota, ha la capacità iniziale specificata e usa il fattore di crescita specificato.

Queue(Int32)

Inizializza una nuova istanza della Queue classe vuota, ha la capacità iniziale specificata e usa il fattore di crescita predefinito.

Proprietà

Nome Descrizione
Count

Ottiene il numero di elementi contenuti in Queue.

IsSynchronized

Ottiene un valore che indica se l'accesso Queue a è sincronizzato (thread-safe).

SyncRoot

Ottiene un oggetto che può essere utilizzato per sincronizzare l'accesso al Queue.

Metodi

Nome Descrizione
Clear()

Rimuove tutti gli oggetti da Queue.

Clone()

Crea una copia superficiale dell'oggetto Queue.

Contains(Object)

Determina se un elemento si trova nel Queue.

CopyTo(Array, Int32)

Copia gli Queue elementi in un oggetto unidimensionale Arrayesistente, a partire dall'indice di matrice specificato.

Dequeue()

Rimuove e restituisce l'oggetto all'inizio di Queue.

Enqueue(Object)

Aggiunge un oggetto alla fine dell'oggetto Queue.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetEnumerator()

Restituisce un enumeratore che scorre l'oggetto Queue.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
Peek()

Restituisce l'oggetto all'inizio di Queue senza rimuoverlo.

Synchronized(Queue)

Restituisce un nuovo Queue oggetto che esegue il wrapping della coda originale ed è thread-safe.

ToArray()

Copia gli Queue elementi in una nuova matrice.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TrimToSize()

Imposta la capacità sul numero effettivo di elementi nella Queue.

Metodi di estensione

Nome Descrizione
AsParallel(IEnumerable)

Abilita la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un IEnumerable in un IQueryable.

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un IEnumerable al tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un IEnumerable in base a un tipo specificato.

Si applica a

Thread safety

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. Non è garantito che tutti i membri dell'istanza siano thread-safe.

Per garantire la thread safety del Queue, tutte le operazioni devono essere eseguite tramite il wrapper restituito dal metodo Synchronized(Queue).

L'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Anche quando una raccolta viene sincronizzata, altri thread possono comunque modificare la raccolta, causando la generazione di un'eccezione da parte dell'enumeratore. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione o intercettare le eccezioni risultanti dalle modifiche apportate da altri thread.

Vedi anche