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
屬性
實作

範例

以下範例說明如何建立並新增 a 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> 需要同時從多個執行緒存取集合。

對 a Queue 及其元素可執行三種主要操作:

a Queue 的容量是它 Queue 能容納的元素數量。 當元素新增至 Queue時,容量會視需要透過重新配置自動增加。 可透過呼叫 TrimToSize來減少容量。

成長因子是指當需要更大容量時,將現有容量乘以的數字。 生長因子是在構造時決定 Queue 的。 預設成長因子為2.0。 Queue無論成長因子如何,容量至少會增加四人。 例如,成長因子為1.0的一個 Queue ,當需要更大的容量時,容量總是會增加四倍。

Queue 接受 null 為有效值,並允許重複元素。

關於本合集的通用版本,請參見 System.Collections.Generic.Queue<T>

建構函式

名稱 Description
Queue()

初始化一個空的類別實例,該實例 Queue 為預設初始容量,並使用預設成長因子。

Queue(ICollection)

初始化一個包含從指定集合複製元素、初始容量與複製元素數量相同,並使用預設成長因子的新類別實例 Queue

Queue(Int32, Single)

初始化一個空的類別實例,該實例 Queue 具有指定的初始容量,並使用指定的成長因子。

Queue(Int32)

初始化一個空的類別實例,該實例 Queue 具有指定的初始容量,並使用預設的成長因子。

屬性

名稱 Description
Count

得到包含於 的 Queue元素數量。

IsSynchronized

取得值,指出是否同步存取 Queue (線程安全)。

SyncRoot

取得一個物件,可用來同步存取 Queue

方法

名稱 Description
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中的實際項目數目。

擴充方法

名稱 Description
AsParallel(IEnumerable)

啟用查詢的平行處理。

AsQueryable(IEnumerable)

IEnumerable 轉換成 IQueryable

Cast<TResult>(IEnumerable)

IEnumerable 的項目轉換成指定的型別。

OfType<TResult>(IEnumerable)

根據指定的型別篩選 IEnumerable 的專案。

適用於

執行緒安全性

此類型的公用靜態 (Shared) 成員是安全線程。 任何實例成員都不保證具有執行緒安全性。

若要保證 Queue的線程安全性,所有作業都必須透過 Synchronized(Queue) 方法傳回的包裝函式來完成。

透過集合列舉本質上不是安全線程的程式。 即使集合同步處理,其他線程仍然可以修改集合,這會導致列舉值擲回例外狀況。 若要保證列舉期間的線程安全性,您可以在整個列舉期間鎖定集合,或攔截其他線程所做的變更所產生的例外狀況。

另請參閱