Queue Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje pierwszą w pierwszej, wychodzącej kolekcji obiektów.
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
- Dziedziczenie
-
Queue
- Atrybuty
- Implementuje
Przykłady
W poniższym przykładzie pokazano, jak utworzyć i dodać wartości do elementu Queue oraz jak wyświetlić jego wartości.
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 !
Uwagi
Ta klasa implementuje kolejkę jako tablicę cykliczną. Obiekty przechowywane w obiekcie Queue są wstawiane na jednym końcu i usuwane z drugiej.
Ważna
Nie zalecamy używania klasy Queue do nowego programowania. Zamiast tego zalecamy użycie klasy ogólnej Queue<T> . Aby uzyskać więcej informacji, zobacz Kolekcje inne niż ogólne nie powinny być używane w usłudze GitHub.
Kolejki i stosy są przydatne, gdy potrzebujesz magazynu tymczasowego na potrzeby informacji; oznacza to, że po pobraniu jego wartości można odrzucić element. Użyj polecenia Queue , jeśli chcesz uzyskać dostęp do informacji w tej samej kolejności, w której są przechowywane w kolekcji. Użyj Stack polecenia , jeśli chcesz uzyskać dostęp do informacji w odwrotnej kolejności. Użyj polecenia ConcurrentQueue<T> lub ConcurrentStack<T> jeśli chcesz uzyskać dostęp do kolekcji z wielu wątków jednocześnie.
Na obiekcie Queue i jego elementach można wykonać trzy główne operacje:
Peek Zwraca najstarszy element, który znajduje się na początku obiektu Queue , ale nie usuwa go z elementu Queue.
Pojemność obiektu Queue to liczba elementów, które Queue mogą być przechowywane. Ponieważ elementy są dodawane do Queueelementu , pojemność jest automatycznie zwiększana zgodnie z wymaganiami za pośrednictwem lokalizacji rzeczywistej. Pojemność można zmniejszyć przez wywołanie metody TrimToSize.
Współczynnik wzrostu to liczba, przez którą bieżąca pojemność jest mnożona, gdy wymagana jest większa pojemność. Współczynnik wzrostu jest określany podczas Queue konstruowania. Domyślny współczynnik wzrostu to 2,0. Pojemność Queue obiektu zawsze wzrośnie o co najmniej cztery, niezależnie od współczynnika wzrostu. Na przykład Queue współczynnik wzrostu o wartości 1,0 zawsze zwiększa pojemność o cztery, gdy wymagana jest większa pojemność.
Queue
null akceptuje jako prawidłową wartość i zezwala na zduplikowane elementy.
Aby uzyskać ogólną wersję tej kolekcji, zobacz System.Collections.Generic.Queue<T>
Konstruktory
| Nazwa | Opis |
|---|---|
| Queue() |
Inicjuje nowe wystąpienie Queue klasy, która jest pusta, ma domyślną pojemność początkową i używa domyślnego współczynnika wzrostu. |
| Queue(ICollection) |
Inicjuje nowe wystąpienie Queue klasy zawierającej elementy skopiowane z określonej kolekcji, ma taką samą pojemność początkową jak liczba skopiowanych elementów i używa domyślnego współczynnika wzrostu. |
| Queue(Int32, Single) |
Inicjuje nowe wystąpienie Queue klasy, która jest pusta, ma określoną pojemność początkową i używa określonego współczynnika wzrostu. |
| Queue(Int32) |
Inicjuje nowe wystąpienie Queue klasy, która jest pusta, ma określoną pojemność początkową i używa domyślnego współczynnika wzrostu. |
Właściwości
| Nazwa | Opis |
|---|---|
| Count |
Pobiera liczbę elementów zawartych w obiekcie Queue. |
| IsSynchronized |
Pobiera wartość wskazującą, czy dostęp do elementu Queue jest synchronizowany (bezpieczny wątek). |
| SyncRoot |
Pobiera obiekt, który może służyć do synchronizowania dostępu do obiektu Queue. |
Metody
| Nazwa | Opis |
|---|---|
| Clear() |
Usuwa wszystkie obiekty z obiektu Queue. |
| Clone() |
Tworzy płytkią kopię Queue. |
| Contains(Object) |
Określa, czy element znajduje się w Queue. |
| CopyTo(Array, Int32) |
Kopiuje Queue elementy do istniejącego jednowymiarowego Array, zaczynając od określonego indeksu tablicy. |
| Dequeue() |
Usuwa obiekt i zwraca go na początku Queueobiektu . |
| Enqueue(Object) |
Dodaje obiekt na końcu Queue. |
| Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
| GetEnumerator() |
Zwraca moduł wyliczający, który iteruje za pośrednictwem elementu Queue. |
| GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
| GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
| Peek() |
Zwraca obiekt na początku Queue obiektu bez jego usunięcia. |
| Synchronized(Queue) |
Zwraca nowy Queue element, który opakowuje oryginalną kolejkę i jest bezpieczny wątkiem. |
| ToArray() |
Kopiuje Queue elementy do nowej tablicy. |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
| TrimToSize() |
Ustawia pojemność na rzeczywistą liczbę elementów w Queue. |
Metody rozszerzania
| Nazwa | Opis |
|---|---|
| AsParallel(IEnumerable) |
Umożliwia równoległość zapytania. |
| AsQueryable(IEnumerable) |
Konwertuje IEnumerable na IQueryable. |
| Cast<TResult>(IEnumerable) |
Rzutuje elementy IEnumerable do określonego typu. |
| OfType<TResult>(IEnumerable) |
Filtruje elementy IEnumerable na podstawie określonego typu. |
Dotyczy
Bezpieczeństwo wątkowe
Publiczne statyczne (Shared w Visual Basic) składowe tego typu są bezpieczne wątkowo. Członkowie instancji nie mają gwarancji bezpieczeństwa wątkowego.
Aby zagwarantować bezpieczeństwo wątków Queue, należy wykonać wszystkie operacje za pośrednictwem otoki zwróconej przez metodę Synchronized(Queue).
Wyliczanie za pośrednictwem kolekcji nie jest wewnętrznie procedurą bezpieczną wątkowo. Nawet w przypadku synchronizacji kolekcji inne wątki nadal mogą modyfikować kolekcję, co powoduje zgłoszenie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, możesz zablokować kolekcję podczas całego wyliczenia lub przechwycić wyjątki wynikające ze zmian wprowadzonych przez inne wątki.