Queue 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示物件的先入先出集合。
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) | |
| 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) 方法傳回的包裝函式來完成。
透過集合列舉本質上不是安全線程的程式。 即使集合同步處理,其他線程仍然可以修改集合,這會導致列舉值擲回例外狀況。 若要保證列舉期間的線程安全性,您可以在整個列舉期間鎖定集合,或攔截其他線程所做的變更所產生的例外狀況。