Queue クラス
オブジェクトの先入れ先出しコレクションを表します。
この型のすべてのメンバの一覧については、Queue メンバ を参照してください。
System.Object
System.Collections.Queue
<Serializable>
Public Class Queue Implements ICollection, IEnumerable, ICloneable
[C#]
[Serializable]
public class Queue : ICollection, IEnumerable, ICloneable
[C++]
[Serializable]
public __gc class Queue : public ICollection, IEnumerable, ICloneable
[JScript]
public
Serializable
class Queue implements ICollection, IEnumerable, ICloneable
スレッドセーフ
この型の public static (Visual Basic では Shared) メンバは、マルチスレッド操作に対して安全です。インスタンス メンバがスレッド セーフになるかどうかは保証されていません。
Queue を確実にスレッド セーフにするためには、すべての操作を Synchronized メソッドから返されるラッパー経由で実行する必要があります。
コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。
解説
キューは、メッセージを順次処理するために、受信した順序で格納しておくために役立ちます。このクラスは、キューを循環配列として実装します。 Queue に格納されたオブジェクトは、一方の端から挿入され、他方の端から削除されます。 Queue に追加された要素の数が現在の容量に達した場合は、さらに要素を格納できるように容量が自動的に増加します。容量を減らすには、 TrimToSize を呼び出します。
Queue は、 null 参照 (Visual Basic では Nothing) を有効な値として受け取り、要素の重複を許可します。
使用例
[Visual Basic, C#, C++] Queue を作成して値を追加する方法と、その値を出力する方法の例を次に示します。
Imports System
Imports System.Collections
Imports Microsoft.VisualBasic
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(ControlChars.Tab + "Count: {0}", myQ.Count)
Console.Write(ControlChars.Tab + "Values:")
PrintValues(myQ)
End Sub
Public Shared Sub PrintValues(myCollection As IEnumerable)
Dim myEnumerator As System.Collections.IEnumerator = _
myCollection.GetEnumerator()
While myEnumerator.MoveNext()
Console.Write(ControlChars.Tab + "{0}", myEnumerator.Current)
End While
Console.WriteLine()
End Sub
End Class
' This code produces the following output.
'
' myQ
' Count: 3
' Values: Hello World !
[C#]
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 ) {
System.Collections.IEnumerator myEnumerator = myCollection.GetEnumerator();
while ( myEnumerator.MoveNext() )
Console.Write( "\t{0}", myEnumerator.Current );
Console.WriteLine();
}
}
/*
This code produces the following output.
myQ
Count: 3
Values: Hello World !
*/
[C++]
#using <mscorlib.dll>
#using <system.dll>
using namespace System;
using namespace System::Collections;
public __gc class SamplesQueue {
public:
static void PrintValues(IEnumerable __gc *myCollection) {
System::Collections::IEnumerator __gc *myEnumerator = myCollection->GetEnumerator();
while (myEnumerator->MoveNext())
Console::Write(S"\t{0}", myEnumerator->Current );
Console::WriteLine();
}
};
int main() {
// Creates and initializes a new Queue.
Queue __gc *myQ = new Queue();
myQ->Enqueue(S"Hello");
myQ->Enqueue(S"World");
myQ->Enqueue(S"!");
// Displays the properties and values of the Queue.
Console::WriteLine(S"myQ");
Console::WriteLine(S"\tCount: {0}", __box(myQ->Count));
Console::Write(S"\tValues:");
SamplesQueue::PrintValues(myQ);
}
/*
This code produces the following output.
myQ
Count: 3
Values: Hello World !
*/
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Collections
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: Mscorlib (Mscorlib.dll 内)