정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Queue<T>.Dequeue 메서드

2013-12-13

Queue<T>의 시작 부분에서 개체를 제거하고 반환합니다.

Namespace:  System.Collections.Generic
어셈블리:  System(System.dll)

public T Dequeue()

반환 값

형식: T
Queue<T>의 시작에서 제거하는 개체입니다.

예외조건
InvalidOperationException

Queue<T>이 비어 있는 경우

이 메서드는 Peek 메서드와 유사하지만 PeekQueue<T>을 수정하지 않습니다.

T 형식이 참조 형식이면 nullQueue<T>에 값으로 추가할 수 있습니다.

이 메서드는 O(1) 연산입니다.

다음 코드 예제에서는 Dequeue 메서드를 비롯하여 Queue<T> 제네릭 클래스의 메서드 몇 가지를 보여 줍니다.

이 코드 예제에서는 기본 용량으로 문자열의 큐를 만들고 Enqueue 메서드를 사용하여 문자열 5개를 큐에 대기시킵니다. 큐의 요소가 열거되지만 큐의 상태는 변경되지 않습니다. Dequeue 메서드를 사용하여 첫 번째 문자열을 큐에서 제거합니다. Peek 메서드를 사용하여 큐에서 다음 항목을 찾은 다음 Dequeue 메서드를 사용하여 해당 항목을 큐에서 제거합니다.

ToArray 메서드를 사용하여 배열을 만들고 큐 요소를 배열에 복사한 다음 IEnumerable<T>을 사용하는 Queue<T> 생성자에 배열을 전달하여 큐의 복사본을 만듭니다. 복사본의 요소가 표시됩니다.

큐 크기의 두 배인 배열이 만들어지고, CopyTo 메서드를 사용하여 배열 중간에서 시작되는 배열 요소를 복사합니다. Queue<T> 생성자를 다시 사용하여 시작 부분에 null 요소 세 개를 포함하는 큐의 두 번째 복사본을 만듭니다.

Contains 메서드를 사용하여 "four" 문자열이 큐의 첫 번째 복사본에 있음을 보여 준 다음 Clear 메서드를 사용하여 복사본을 지우고 Count 속성을 통해 큐가 비어 있음을 보여 줍니다.


using System;
using System.Collections.Generic;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      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)
      {
         outputBlock.Text += number + "\n";
      }

      outputBlock.Text += String.Format("\nDequeuing '{0}'", numbers.Dequeue()) + "\n";
      outputBlock.Text += String.Format("Peek at next item to dequeue: {0}",
          numbers.Peek()) + "\n";
      outputBlock.Text += String.Format("Dequeuing '{0}'", numbers.Dequeue()) + "\n";

      // 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());

      outputBlock.Text += "\nContents of the first copy:" + "\n";
      foreach (string number in queueCopy)
      {
         outputBlock.Text += number + "\n";
      }

      // 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);

      outputBlock.Text += String.Format("\nContents of the second copy, with duplicates and nulls:") + "\n";
      foreach (string number in queueCopy2)
      {
         outputBlock.Text += number + "\n";
      }

      outputBlock.Text += String.Format("\nqueueCopy.Contains(\"four\") = {0}",
          queueCopy.Contains("four")) + "\n";

      outputBlock.Text += "\nqueueCopy.Clear()" + "\n";
      queueCopy.Clear();
      outputBlock.Text += String.Format("\nqueueCopy.Count = {0}", queueCopy.Count) + "\n";
   }
}

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


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시: