Queue Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
[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
- Dědičnost
-
Queue
- Atributy
- Implementuje
Příklady
Následující příklad ukazuje, jak vytvořit a přidat hodnoty a Queue jak vytisknout jeho hodnoty.
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 objektu Queue jsou vloženy na jeden konec a odebrány z druhého.
Důležité
Nedoporučujeme používat Queue třídu pro nový vývoj. Místo toho doporučujeme použít obecnou Queue<T> třídu. Další informace najdete v tématu Ne generické kolekce, které 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. Použijte Queue , pokud potřebujete získat přístup k informacím ve stejném pořadí, v jakém jsou uloženy v kolekci. Použijte Stack , pokud potřebujete získat přístup k informacím v obráceném pořadí. Použijte ConcurrentQueue<T> nebo ConcurrentStack<T> pokud potřebujete současně přistupovat ke kolekci z více vláken.
Tři hlavní operace se dají provádět u Queue jednotlivých prvků:
Kapacita je Queue počet prvků, které Queue může obsahovat. S tím, jak jsou prvky přidány do Queue, kapacita se automaticky zvýší podle potřeby prostřednictvím reallocation. 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 Queue vytváření. Výchozí faktor růstu je 2,0. Kapacita Queue bude vždy zvýšena alespoň o čtyři, bez ohledu na faktor růstu. Například Queue s faktorem růstu 1,0 se vždy zvýší kapacita o čtyři, když se vyžaduje větší kapacita.
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
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
| Count |
Získá počet prvků obsažených v objektu 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
| Name | Description |
|---|---|
| Clear() |
Odebere všechny objekty z objektu Queue. |
| Clone() |
Vytvoří mělkou kopii Queue. |
| Contains(Object) |
Určuje, zda je prvek v objektu Queue. |
| CopyTo(Array, Int32) |
Queue Zkopíruje prvky do existujícího jednorozměrného Arrayindexu počínaje zadaným indexem pole. |
| Dequeue() |
Odebere a vrátí objekt na začátku objektu Queue. |
| Enqueue(Object) |
Přidá objekt na konec objektu Queue. |
| Equals(Object) |
Určí, zda se zadaný objekt rovná 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 objektu Queue bez jeho odebrání. |
| Synchronized(Queue) |
Vrátí novou Queue , která zabalí původní frontu a je bezpečná pro vlákno. |
| ToArray() |
Queue Zkopíruje prvky 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 souboru Queue. |
Metody rozšíření
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
| AsQueryable(IEnumerable) |
Převede IEnumerable na IQueryable. |
| Cast<TResult>(IEnumerable) |
Přetypuje prvky IEnumerable na zadaný typ. |
| OfType<TResult>(IEnumerable) |
Filtruje prvky IEnumerable na základě zadaného typu. |
Platí pro
Bezpečný přístup z více vláken
Veřejné statické členy tohoto typu (Shared v jazyce Visual Basic) jsou bezpečné pro přístup z více vláken. U žádného člena instance není zaručena bezpečnost pro přístup z více vláken.
Chcete-li zaručit bezpečnost Queuevlákna , všechny operace musí být 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.