次の方法で共有


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 内)

参照

Queue メンバ | System.Collections 名前空間