Queue Класс

Определение

Представляет первую коллекцию объектов.

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
Наследование
Queue
Атрибуты
Реализации

Примеры

В следующем примере показано, как создавать и добавлять значения в объект Queue и как вывести его значения.

 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    !

Комментарии

Этот класс реализует очередь в виде кругового массива. Объекты, хранящиеся в a, Queue вставляются в один конец и удаляются из другого.

Important

Мы не рекомендуем использовать Queue класс для новой разработки. Вместо этого рекомендуется использовать универсальный Queue<T> класс. Дополнительные сведения см. в статье, не относящийся к универсальным коллекциям, которые не должны использоваться на сайте GitHub.

Очереди и стеки полезны, если требуется временное хранилище для информации; То есть, когда может потребоваться отменить элемент после извлечения его значения. Используйте Queue , если вам нужно получить доступ к данным в том же порядке, что он хранится в коллекции. Используйте, Stack если вам нужно получить доступ к информации в обратном порядке. Используйте ConcurrentQueue<T> или ConcurrentStack<T> , если необходимо получить доступ к коллекции из нескольких потоков одновременно.

Три основных операции можно выполнять с элементами:Queue

  • Enqueue добавляет элемент в конец Queueэлемента.

  • Dequeue Удаляет самый старый элемент из начала Queueэлемента .

  • Peek возвращает самый старый элемент, который находится в начале, Queue но не удаляет его из Queue.

Емкость Queue — это количество элементов, которые Queue могут храниться. Так как элементы добавляются в объект Queue, емкость автоматически увеличивается по мере необходимости при перемещении. Емкость можно уменьшить путем вызова TrimToSize.

Коэффициент роста — это число, с помощью которого текущая емкость умножается при необходимости большей емкости. Фактор роста определяется при Queue построении. Коэффициент роста по умолчанию — 2.0. Емкость Queue всегда увеличивается по крайней мере на четыре, независимо от фактора роста. Например, Queue увеличение емкости на 1,0 всегда увеличивается на четыре, если требуется больше емкости.

Queue null принимает в качестве допустимого значения и разрешает повторяющиеся элементы.

Универсальные версии этой коллекции см. в разделе System.Collections.Generic.Queue<T>

Конструкторы

Имя Описание
Queue()

Инициализирует новый экземпляр Queue класса, который является пустым, имеет начальную емкость по умолчанию и использует коэффициент роста по умолчанию.

Queue(ICollection)

Инициализирует новый экземпляр Queue класса, который содержит элементы, скопированные из указанной коллекции, имеет ту же начальную емкость, что и количество скопированных элементов и использует коэффициент роста по умолчанию.

Queue(Int32, Single)

Инициализирует новый экземпляр Queue класса, который является пустым, имеет указанную начальную емкость и использует указанный коэффициент роста.

Queue(Int32)

Инициализирует новый экземпляр Queue класса, который является пустым, имеет указанную начальную емкость и использует коэффициент роста по умолчанию.

Свойства

Имя Описание
Count

Возвращает количество элементов, содержащихся в Queue.

IsSynchronized

Возвращает значение, указывающее, синхронизирован ли доступ к Queue (потокобезопасный).

SyncRoot

Получает объект, который можно использовать для синхронизации доступа к объекту Queue.

Методы

Имя Описание
Clear()

Удаляет все объекты из объекта Queue.

Clone()

Создает неглубокую копию Queue.

Contains(Object)

Определяет, находится ли элемент в элементе Queue.

CopyTo(Array, Int32)

Копирует Queue элементы в существующий одномерный Arrayиндекс, начиная с указанного индекса массива.

Dequeue()

Удаляет и возвращает объект в начале Queueобъекта.

Enqueue(Object)

Добавляет объект в конец Queue.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetEnumerator()

Возвращает перечислитель, который выполняет итерацию через Queue.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
Peek()

Возвращает объект в начале Queue без удаления.

Synchronized(Queue)

Возвращает новый Queue объект, который упаковывает исходную очередь и является потокобезопасной.

ToArray()

Копирует Queue элементы в новый массив.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TrimToSize()

Задает емкость фактическому количеству элементов в объекте Queue.

Методы расширения

Имя Описание
AsParallel(IEnumerable)

Включает параллелизацию запроса.

AsQueryable(IEnumerable)

Преобразует IEnumerable в IQueryable.

Cast<TResult>(IEnumerable)

Приведение элементов IEnumerable к указанному типу.

OfType<TResult>(IEnumerable)

Фильтрует элементы IEnumerable на основе указанного типа.

Применяется к

Потокобезопасность

Общедоступные статические (Shared в Visual Basic) элементы этого типа являются потокобезопасны. Никакие члены экземпляра не гарантированы как потокобезопасные.

Чтобы гарантировать безопасность Queueпотока, все операции должны выполняться с помощью оболочки, возвращаемой методом Synchronized(Queue) .

Перечисление через коллекцию по сути не является потокобезопасной процедурой. Даже если коллекция синхронизирована, другие потоки по-прежнему могут изменять коллекцию, что приводит к возникновению исключения перечислителем. Чтобы гарантировать безопасность потоков во время перечисления, можно заблокировать коллекцию во время всего перечисления или поймать исключения, полученные из изменений, внесенных другими потоками.

См. также раздел