Sdílet prostřednictvím


Queue Třída

Definice

Představuje první in kolekci objektů.

public ref class Queue : System::Collections::ICollection
public ref class Queue : ICloneable, System::Collections::ICollection
public class Queue : System.Collections.ICollection
public class Queue : ICloneable, 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
type Queue = class
    interface ICollection
    interface IEnumerable
type Queue = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<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
Public Class Queue
Implements ICollection
Public Class Queue
Implements ICloneable, ICollection
Dědičnost
Queue
Atributy
Implementuje

Příklady

Následující příklad ukazuje, jak vytvořit a přidat hodnoty do Queue a jak vytisknout jeho hodnoty.

using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myCollection );
int main()
{
   
   // Creates and initializes a new Queue.
   Queue^ myQ = gcnew 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 );
}

void PrintValues( IEnumerable^ myCollection )
{
   IEnumerator^ myEnum = myCollection->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ obj = safe_cast<Object^>(myEnum->Current);
      Console::Write( "    {0}", obj );
   }

   Console::WriteLine();
}

/* 
 This code produces the following output.
 
 myQ
     Count:    3
     Values:    Hello    World    !
*/
 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    !

Poznámky

Tato třída implementuje frontu jako kruhové pole. Objekty uložené v Queue se vloží na jeden konec a odeberou se z druhého.

Důležitý

Nedoporučujeme používat třídu Queue pro nový vývoj. Místo toho doporučujeme použít obecnou třídu Queue<T>. Další informace najdete v tématu Ne generické kolekce by se neměly používat na GitHubu.

Fronty a zásobníky jsou užitečné, když potřebujete dočasné úložiště pro informace; to znamená, že když budete chtít zahodit prvek po načtení jeho hodnoty. Pokud potřebujete získat přístup k informacím ve stejném pořadí, v jakém jsou uložené v kolekci, použijte Queue. Pokud potřebujete získat přístup k informacím v obráceném pořadí, použijte Stack. Pokud potřebujete současně přistupovat ke kolekci z více vláken, použijte ConcurrentQueue<T> nebo ConcurrentStack<T>.

U Queue a jejích prvků je možné provádět tři hlavní operace:

Kapacita Queue je počet prvků, které Queue může obsahovat. Při přidání prvků do Queuese kapacita automaticky zvýší podle potřeby prostřednictvím skutečné polohy. Kapacitu lze snížit voláním TrimToSize.

Faktor růstu je číslo, podle kterého se aktuální kapacita vynásobí, když se vyžaduje větší kapacita. Faktor růstu je určen při vytváření Queue. Výchozí faktor růstu je 2,0. Kapacita Queue se vždy zvýší alespoň o čtyři, bez ohledu na faktor růstu. Například Queue s faktorem růstu 1,0 se při vyžadování větší kapacity vždy zvýší o čtyři.

Queue přijímá null jako platnou hodnotu a umožňuje duplicitní prvky.

Obecná verze této kolekce najdete v tématu System.Collections.Generic.Queue<T>

Konstruktory

Queue()

Inicializuje novou instanci Queue třídy, která je prázdná, má výchozí počáteční kapacitu a používá výchozí faktor růstu.

Queue(ICollection)

Inicializuje novou instanci Queue třídy, která obsahuje prvky zkopírované ze zadané kolekce, má stejnou počáteční kapacitu jako počet zkopírovaných prvků a používá výchozí faktor růstu.

Queue(Int32, Single)

Inicializuje novou instanci Queue třídy, která je prázdná, má zadanou počáteční kapacitu a používá zadaný faktor růstu.

Queue(Int32)

Inicializuje novou instanci Queue třídy, která je prázdná, má zadanou počáteční kapacitu a používá výchozí faktor růstu.

Vlastnosti

Count

Získá počet prvků obsažených v Queue.

IsSynchronized

Získá hodnotu označující, zda je přístup k Queue synchronizován (bezpečné vlákno).

SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k Queue.

Metody

Clear()

Odebere všechny objekty z Queue.

Clone()

Vytvoří mělkou kopii Queue.

Contains(Object)

Určuje, zda je prvek v Queue.

CopyTo(Array, Int32)

Zkopíruje Queue elementy do existujícího jednorozměrného Arraypočínaje zadaným indexem pole.

Dequeue()

Odebere a vrátí objekt na začátku Queue.

Enqueue(Object)

Přidá objekt na konec Queue.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetEnumerator()

Vrátí enumerátor, který iteruje přes Queue.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
Peek()

Vrátí objekt na začátku Queue bez jeho odebrání.

Synchronized(Queue)

Vrátí nový Queue, který zabalí původní frontu a je bezpečný pro vlákno.

ToArray()

Zkopíruje prvky Queue do nového pole.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
TrimToSize()

Nastaví kapacitu na skutečný počet prvků v Queue.

Metody rozšíření

Cast<TResult>(IEnumerable)

Přetypuje prvky IEnumerable na zadaný typ.

OfType<TResult>(IEnumerable)

Filtruje prvky IEnumerable na základě zadaného typu.

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede IEnumerable na IQueryable.

Platí pro

Bezpečný přístup z více vláken

Veřejné statické (Shared v jazyce Visual Basic) tohoto typu jsou bezpečné pro přístup z více vláken. U všech členů instance není zaručeno, že budou bezpečné pro přístup z více vláken.

Chcete-li zaručit bezpečnost vlákna Queue, musí být všechny operace provedeny prostřednictvím obálky vrácené metodou Synchronized(Queue).

Výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. I když je kolekce synchronizována, ostatní vlákna mohou stále upravovat kolekci, což způsobí, že enumerátor vyvolá výjimku. Chcete-li zaručit bezpečnost vláken během výčtu, můžete buď uzamknout kolekci během celého výčtu, nebo zachytit výjimky vyplývající z změn provedených jinými vlákny.

Viz také