Ler em inglês

Partilhar via


Queue<T>.ToArray Método

Definição

Copia os elementos do Queue<T> em uma nova matriz.

C#
public T[] ToArray ();

Retornos

T[]

Uma nova matriz que contém os elementos copiados de Queue<T>.

Exemplos

O exemplo de código a seguir demonstra vários métodos da Queue<T> classe genérica, incluindo o ToArray método .

O exemplo de código cria uma fila de cadeias de caracteres com capacidade padrão e usa o Enqueue método para enfileirar cinco cadeias de caracteres. Os elementos da fila são enumerados, o que não altera o estado da fila. O Dequeue método é usado para remover a primeira cadeia de caracteres. O Peek método é usado para examinar o próximo item na fila e, em seguida, o Dequeue método é usado para desemplá-lo.

O ToArray método é usado para criar uma matriz e copiar os elementos da fila para ele e, em seguida, a matriz é passada para o Queue<T> construtor que usa IEnumerable<T>, criando uma cópia da fila. Os elementos da cópia são exibidos.

Uma matriz duas vezes o tamanho da fila é criado e o CopyTo método é usado para copiar os elementos da matriz começando no meio da matriz. O Queue<T> construtor é usado novamente para criar uma segunda cópia da fila que contém três elementos nulos no início.

O Contains método é usado para mostrar que a cadeia de caracteres "quatro" está na primeira cópia da fila, após a qual o Clear método limpa a cópia e a Count propriedade mostra que a fila está vazia.

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 first 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
 */

Comentários

O Queue<T> não é modificado. A ordem dos elementos na nova matriz é a mesma que a ordem dos elementos do início do até o Queue<T> final.

Este método é uma operação O(n), em que n é Count.

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0