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

C# Clone() 메서드 – 배열 복제 완벽 가이드

C#의 Clone() 메서드는 기존 배열과 동일한 요소를 가진 복사본을 생성할 때 사용되는 메서드입니다. 이 메서드는 배열뿐만 아니라 Array 클래스를 상속하는 모든 배열 유형에 적용할 수 있습니다.

아래 예제를 통해 Clone() 메서드를 사용하여 배열을 복제하는 방법을 살펴보겠습니다.

예제

using System;
class Program {
   static void Main() {
      string[] arr = { "one", "two", "three", "four", "five" };
      string[] arrCloned = arr.Clone() as string[];
      Console.WriteLine(string.Join(",", arr));
      // cloned array
      Console.WriteLine(string.Join(",", arrCloned));
      Console.WriteLine();
   }
}

출력 결과

one,two,three,four,five
one,two,three,four,five

코드 설명

위 예제에서는 먼저 다음과 같이 문자열 배열을 선언하고 초기화했습니다.

string[] arr = { "one", "two", "three", "four", "five" };

그다음, as 연산자와 함께 Clone() 메서드를 호출하여 새로운 문자열 배열에 복제된 배열을 할당했습니다.

string[] arrCloned = arr.Clone() as string[];

Clone() 메서드 사용 시 주의사항

Clone() 메서드를 사용할 때 몇 가지 중요한 특징을 알아두면 좋습니다.

1. 반환 타입은 object

Clone() 메서드의 반환 타입은 object이기 때문에, 원본 배열과 동일한 타입으로 명시적인 형 변환이 필요합니다. 위 예제에서는 as 연산자를 사용해 안전하게 string[] 타입으로 캐스팅했습니다.

2. 얕은 복사(Shallow Copy)

Clone() 메서드는 배열의 요소 자체가 아닌 참조만 복사하는 얕은 복사를 수행합니다. 즉, 값 타입(int, double 등)의 배열은 완전히 독립적으로 복제되지만, 참조 타입(객체)의 배열은 내부 객체를 원본과 공유하게 됩니다.

3. 새로운 배열 인스턴스 생성

복제된 배열은 차원과 길이가 원본과 동일한 새로운 배열 인스턴스입니다. 따라서 복제본에 새 요소를 추가하거나 길이를 변경해도 원본 배열에는 영향을 주지 않습니다.