Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Queue.Clone() 메서드 – 큐의 얕은 복사본 만들기

C#의 Queue.Clone() 메서드는 기존 Queue(큐) 객체의 얕은 복사본(shallow copy)을 새로 생성하는 데 사용됩니다. 복제된 큐는 원본과 동일한 요소들을 같은 순서로 가지며, 이후에는 원본과 독립적으로 동작합니다.

구문

Queue.Clone() 메서드의 기본 구문은 다음과 같습니다.

public virtual object Clone ();

주요 특징

  • 반환 타입이 object이므로 사용 시 Queue 타입으로 명시적 캐스팅이 필요합니다.
  • 얕은 복사 방식이므로 요소 자체가 아니라 요소에 대한 참조만 복사됩니다.

예제 1: 문자열 큐 복제하기

다음 예제에서는 문자열 요소를 가진 Queue를 생성하고, Clone() 메서드로 복제한 뒤 각각의 내용을 출력합니다.

using System;
using System.Collections;

public class Demo {
   public static void Main(string[] args) {
      Queue queue = new Queue();
      queue.Enqueue("One");
      queue.Enqueue("Two");
      queue.Enqueue("Three");
      queue.Enqueue("Four");
      queue.Enqueue("Five");
      queue.Enqueue("Six");
      queue.Enqueue("Seven");
      queue.Enqueue("Eight");

      Console.WriteLine("Queue...");
      foreach(string str in queue) {
         Console.WriteLine(str);
      }

      Queue queue2 = (Queue)queue.Clone();
      Console.WriteLine("\nCloned Queue....");
      foreach(string str in queue2) {
         Console.WriteLine(str);
      }
   }
}

출력 결과

Queue...
One
Two
Three
Four
Five
Six
Seven
Eight

Cloned Queue....
One
Two
Three
Four
Five
Six
Seven
Eight

예제 2: 정수 큐 복제하기

이번에는 정수(int) 요소를 가진 Queue를 Clone() 메서드로 복제하는 예제입니다.

using System;
using System.Collections;

public class Demo {
   public static void Main(string[] args) {
      Queue queue = new Queue();
      queue.Enqueue(10);
      queue.Enqueue(20);
      queue.Enqueue(30);
      queue.Enqueue(40);
      queue.Enqueue(50);

      Console.WriteLine("Queue...");
      foreach(int str in queue) {
         Console.WriteLine(str);
      }

      Queue queue2 = (Queue)queue.Clone();
      Console.WriteLine("\nCloned Queue....");
      foreach(int str in queue2) {
         Console.WriteLine(str);
      }
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Queue...
10
20
30
40
50

Cloned Queue....
10
20
30
40
50

정리

Queue.Clone() 메서드는 원본 큐에 영향을 주지 않으면서 동일한 데이터를 가진 새로운 큐가 필요할 때 유용하게 활용할 수 있습니다. 다만 얕은 복사 방식이기 때문에 참조 타입 요소를 다루는 경우 원본과 복제본이 같은 객체를 공유한다는 점을 반드시 유의해야 합니다.