Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2005/.NET Framework 2.0

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
Clase genérica Queue

Nota: esta clase es nueva en la versión 2.0 de .NET Framework.

Representa una colección de objetos de tipo primero en entrar, primero en salir.

Espacio de nombres: System.Collections.Generic
Ensamblado: System (en system.dll)

Visual Basic (Declaración)
<SerializableAttribute> _
<ComVisibleAttribute(False)> _
Public Class Queue(Of T)
    Implements IEnumerable(Of T), ICollection, _
    IEnumerable
Visual Basic (Uso)
Dim instance As Queue(Of T)
C#
[SerializableAttribute] 
[ComVisibleAttribute(false)] 
public class Queue<T> : IEnumerable<T>, ICollection, 
    IEnumerable
C++
[SerializableAttribute] 
[ComVisibleAttribute(false)] 
generic<typename T>
public ref class Queue : IEnumerable<T>, ICollection, 
    IEnumerable
J#
J# admite el uso de métodos y tipos genéricos, pero no admite la declaración de métodos y tipos nuevos.
JScript
JScript no admite el uso de métodos y tipos genéricos.

Parámetros de tipo

T

Especifica el tipo de elementos en la cola.

Las colas son útiles para almacenar mensajes en el orden en el que fueron recibidos para el procesamiento secuencial. Los objetos almacenados en Queue se insertan en un extremo y se quitan del otro.

La capacidad de una colección Queue es el número de elementos que dicha Queue puede contener. En esta implementación, la capacidad inicial predeterminada para una colección Queue es 8; sin embargo, ese valor predeterminado quizás cambie en las versiones futuras de .NET Framework SDK. Cuando se agregan elementos a una colección Queue, la capacidad aumenta automáticamente según sea necesario mediante la reasignación de la matriz interna. La capacidad puede disminuir llamando a TrimExcess.

Queue acepta referencia de objeto null (Nothing en Visual Basic) como valor válido para los tipos de referencia y admite elementos duplicados.

En el ejemplo de código siguiente se muestran varios métodos de la clase genérica Queue. En este ejemplo de código se crea una cola de cadenas con capacidad predeterminada y se utiliza el método Enqueue para poner en la cola cinco cadenas. Se enumeran los elementos de la cola, lo que no cambia el estado de la cola. Se utiliza el método Dequeue para quitar la primera cadena de la cola. Se usa el método Peek para localizar el siguiente elemento de la cola y, a continuación, se utiliza el método Dequeue para quitarlo de la cola.

También se usa el método ToArray para crear una matriz y copiar en ella los elementos de la cola; a continuación, se pasa esta matriz al constructor Queue que toma IEnumerable y se crea una copia de la cola. Después, se muestran los elementos de la copia.

Se crea una matriz del doble de tamaño que el de la cola y se utiliza el método CopyTo para copiar los elementos de la matriz, empezando por el centro de la matriz. Se vuelve a usar el constructor Queue para crear una segunda copia de la cola, que contiene tres elementos null al principio.

Se utiliza el método Contains para mostrar que la cadena "four" está en la primera copia de la cola y, después, el método Clear borra la copia y la propiedad Count muestra que la cola está vacía.

Visual Basic
Imports System
Imports System.Collections.Generic

Module Example

    Sub Main

        Dim numbers As New Queue(Of String)
        numbers.Enqueue("one")
        numbers.Enqueue("two")
        numbers.Enqueue("three")
        numbers.Enqueue("four")
        numbers.Enqueue("five")

        ' A queue can be enumerated without disturbing its contents.
        For Each number As String In numbers
            Console.WriteLine(number)
        Next

        Console.WriteLine(vbLf & "Dequeuing '{0}'", numbers.Dequeue())
        Console.WriteLine("Peek at next item to dequeue: {0}", _
            numbers.Peek())    
        Console.WriteLine("Dequeuing '{0}'", numbers.Dequeue())

        ' Create a copy of the queue, using the ToArray method and the
        ' constructor that accepts an IEnumerable(Of T).
        Dim queueCopy As New Queue(Of String)(numbers.ToArray())

        Console.WriteLine(vbLf & "Contents of the first copy:")
        For Each number As String In queueCopy
            Console.WriteLine(number)
        Next
        
        ' Create an array twice the size of the queue, compensating
        ' for the fact that Visual Basic allocates an extra array 
        ' element. Copy the elements of the queue, starting at the
        ' middle of the array. 
        Dim array2((numbers.Count * 2) - 1) As String
        numbers.CopyTo(array2, numbers.Count)
        
        ' Create a second queue, using the constructor that accepts an
        ' IEnumerable(Of T).
        Dim queueCopy2 As New Queue(Of String)(array2)

        Console.WriteLine(vbLf & _
            "Contents of the second copy, with duplicates and nulls:")
        For Each number As String In queueCopy2
            Console.WriteLine(number)
        Next

        Console.WriteLine(vbLf & "queueCopy.Contains(""four"") = {0}", _
            queueCopy.Contains("four"))

        Console.WriteLine(vbLf & "queueCopy.Clear()")
        queueCopy.Clear()
        Console.WriteLine(vbLf & "queueCopy.Count = {0}", _
            queueCopy.Count)
    End Sub
End Module

' This code example produces the following output:
'
'one
'two
'three
'four
'five
'
'Dequeuing 'one'
'Peek at next item to dequeue: two
'
'Dequeuing 'two'
'
'Contents of the copy:
'three
'four
'five
'
'Contents of the second copy, with duplicates and nulls:
'
'
'
'three
'four
'five
'
'queueCopy.Contains("four") = True
'
'queueCopy.Clear()
'
'queueCopy.Count = 0
C#
using System;
using System.Collections.Generic;

class Example
{
    public static void Main()
    {
        Queue<string> numbers = new Queue<string>();
        numbers.Enqueue("one");
        numbers.Enqueue("two");
        numbers.Enqueue("three");
        numbers.Enqueue("four");
        numbers.Enqueue("five");

        // A queue can be enumerated without disturbing its contents.
        foreach( string number in numbers )
        {
            Console.WriteLine(number);
        }

        Console.WriteLine("\nDequeuing '{0}'", numbers.Dequeue());
        Console.WriteLine("Peek at next item to dequeue: {0}", 
            numbers.Peek());
        Console.WriteLine("Dequeuing '{0}'", numbers.Dequeue());

        // Create a copy of the queue, using the ToArray method and the
        // constructor that accepts an IEnumerable<T>.
        Queue<string> queueCopy = new Queue<string>(numbers.ToArray());

        Console.WriteLine("\nContents of the first copy:");
        foreach( string number in queueCopy )
        {
            Console.WriteLine(number);
        }
        
        // Create an array twice the size of the queue and copy the
        // elements of the queue, starting at the middle of the 
        // array. 
        string[] array2 = new string[numbers.Count * 2];
        numbers.CopyTo(array2, numbers.Count);
        
        // Create a second queue, using the constructor that accepts an
        // IEnumerable(Of T).
        Queue<string> queueCopy2 = new Queue<string>(array2);

        Console.WriteLine("\nContents of the second copy, with duplicates and nulls:");
        foreach( string number in queueCopy2 )
        {
            Console.WriteLine(number);
        }

        Console.WriteLine("\nqueueCopy.Contains(\"four\") = {0}", 
            queueCopy.Contains("four"));

        Console.WriteLine("\nqueueCopy.Clear()");
        queueCopy.Clear();
        Console.WriteLine("\nqueueCopy.Count = {0}", queueCopy.Count);
    }
}

/* This code example produces the following output:

one
two
three
four
five

Dequeuing 'one'
Peek at next item to dequeue: two
Dequeuing 'two'

Contents of the copy:
three
four
five

Contents of the second copy, with duplicates and nulls:



three
four
five

queueCopy.Contains("four") = True

queueCopy.Clear()

queueCopy.Count = 0
 */
System.Object
  System.Collections.Generic.Queue

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Queue puede admitir varios sistemas de lectura a la vez, siempre y cuando no se modifique la colección. Aun así, por su naturaleza, la enumeración mediante una colección no es un procedimiento seguro para la ejecución de subprocesos. Para garantizar la seguridad para la ejecución de subprocesos durante la enumeración, puede bloquear la colección durante toda la enumeración. Para permitir que varios subprocesos obtengan acceso de lectura y escritura a la colección, debe implementar su propia sincronización.

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

.NET Compact Framework

Compatible con: 2.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2009 Microsoft Corporation. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker