Representa una colección de objetos de tipo "primero en entrar, primero en salir".
Espacio de nombres: System.Collections
Ensamblado: mscorlib (en mscorlib.dll)
Visual Basic (Declaración)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class Queue
Implements ICollection, IEnumerable, ICloneable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class Queue : ICollection, IEnumerable, ICloneable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class Queue : ICollection, IEnumerable, ICloneable
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
public class Queue implements ICollection, IEnumerable,
ICloneable
SerializableAttribute
ComVisibleAttribute(true)
public class Queue implements ICollection, IEnumerable,
ICloneable
Las colas son útiles para almacenar mensajes en el orden en el que fueron recibidos para el procesamiento secuencial. Esta clase implementa una cola como una matriz circular. Los objetos almacenados en Queue se insertan en un extremo y se quitan del otro.
La capacidad de Queue es el número de elementos que Queue puede contener. La capacidad inicial predeterminada de Queue es 32. A medida que se agregan elementos a una colección Queue, la capacidad aumenta automáticamente según lo requiera la reasignación. La capacidad se puede disminuir si se llama al método TrimToSize.
El factor de crecimiento es el número por el cual se multiplica la capacidad actual cuando se requiere una capacidad mayor. El factor de crecimiento se determina al construir la clase Queue. El factor de crecimiento predeterminado es 2,0.
La clase Queue acepta referencia de objeto null (Nothing en Visual Basic) como valor válido y admite elementos duplicados.
Para obtener la versión genérica de esta colección, vea System.Collections.Generic.Queue.
En el ejemplo siguiente se muestra cómo crear y agregar valores a Queue y cómo imprimirlos.
Imports System
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 'Main
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 'PrintValues
End Class 'SamplesQueue
' This code produces the following output.
'
' myQ
' Count: 3
' Values: Hello World !
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 !
*/
using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myCollection );
int main()
{
// Creates and initializes a new Queue.
Queue^ myQ = gcnew 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 );
}
void PrintValues( IEnumerable^ myCollection )
{
IEnumerator^ myEnum = myCollection->GetEnumerator();
while ( myEnum->MoveNext() )
{
Object^ obj = safe_cast<Object^>(myEnum->Current);
Console::Write( " {0}", obj );
}
Console::WriteLine();
}
/*
This code produces the following output.
myQ
Count: 3
Values: Hello World !
*/
import System.*;
import System.Collections.*;
public class SamplesQueue
{
public static void main(String[] args)
{
// 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}",System.Convert.ToString(myQ.get_Count()));
Console.Write("\tValues:");
PrintValues(myQ);
} //main
public static void PrintValues(IEnumerable myCollection)
{
IEnumerator enumerator = myCollection.GetEnumerator();
while(enumerator.MoveNext()) {
Object obj = enumerator.get_Current();
Console.Write(" {0}", obj);
}
Console.WriteLine();
} //PrintValues
} //SamplesQueue
/*
This code produces the following output.
myQ
Count: 3
Values: Hello World !
*/
System.Object
System.Collections.Queue
Seguridad para subprocesos
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Para garantizar la seguridad en la ejecución de los subprocesos de Queue, todas las operaciones se deben realizar mediante el contenedor devuelto por el método Synchronized.
La enumeración a través de una colección es un procedimiento sin seguridad intrínseca para la ejecución de subprocesos. Aunque una colección esté sincronizada, otros subprocesos pueden seguir modificándola, por lo que el enumerador produce una excepción. Con el fin de garantizar la seguridad para la ejecución de subprocesos durante la enumeración, es posible bloquear la colección durante toda la enumeración o detectar las excepciones debidas a cambios efectuados por otros subprocesos.
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.
.NET Framework
Compatible con: 2.0, 1.1, 1.0
.NET Compact Framework
Compatible con: 2.0, 1.0