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

C#에서 배열 복제하기 – Clone() 메서드 완벽 정리

C#에서 Clone() 메서드는 기존 배열과 동일한 복사본을 새로 생성할 때 유용하게 사용됩니다. 별도의 반복문 없이 단 한 줄의 코드로 배열 전체를 손쉽게 복제할 수 있으며, C#은 이를 위해 Clone() 메서드와 ICloneable 인터페이스를 함께 제공합니다.

Clone() 메서드의 기본 개념

Clone() 메서드는 호출 대상인 배열과 같은 요소를 가진 새로운 얕은 복사(shallow copy) 객체를 반환합니다. 반환 타입이 object이기 때문에, 원래의 배열 타입으로 변환할 때 일반적으로 as 연산자나 명시적 캐스팅을 사용합니다.

예제 코드

다음은 문자열 배열을 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));
        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()은 얕은 복사를 수행하므로, 참조 타입 요소가 포함된 배열에서는 내부 요소들이 원본과 동일한 객체를 참조한다는 점을 기억해야 합니다. 값 타입 요소만 있는 배열이라면 완전히 독립적인 복사본처럼 동작하지만, 다차원 배열의 경우 첫 번째 차원만 복사되는 점도 유의해야 합니다. 깊은 복사(deep copy)가 필요하다면 직접 구현하거나 직렬화 등의 방법을 활용해야 합니다.