List는 C#에서 동일한 데이터 타입의 요소들을 저장하는 대표적인 제네릭(Generic) 컬렉션입니다. 크기가 자동으로 조절되며, 다양한 메서드를 통해 요소를 추가·삭제·검색할 수 있어 실무에서 가장 많이 사용되는 자료구조 중 하나입니다.
CopyTo 메서드로 목록 복제하기
C#에서 목록(List)을 복제하는 가장 기본적인 방법은 CopyTo 메서드를 사용하는 것입니다. 이 메서드는 목록의 모든 요소를 지정된 배열로 복사합니다.
1단계: 목록 선언 및 요소 추가
먼저 문자열 타입의 목록을 선언하고 요소들을 추가합니다.
List<string> myList = new List<string>();
myList.Add("Programming");
myList.Add("Web Dev");
myList.Add("Database");
2단계: 새 배열을 만들고 목록 복제
복사할 대상이 될 배열을 생성한 뒤, CopyTo 메서드를 호출하여 목록의 내용을 배열에 복사합니다. 이때 배열의 크기는 목록의 요소 수보다 크거나 같아야 합니다.
string[] arr = new string[10]; myList.CopyTo(arr);
전체 예제 코드
다음은 위 과정을 하나로 묶은 완전한 실행 코드입니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
// 목록 선언 및 요소 추가
List<string> myList = new List<string>();
myList.Add("Programming");
myList.Add("Web Dev");
myList.Add("Database");
Console.WriteLine("첫 번째 목록...");
foreach(string value in myList) {
Console.WriteLine(value);
}
// 배열 생성 후 목록 복제
string[] arr = new string[10];
myList.CopyTo(arr);
Console.WriteLine("복제 후...");
foreach(string value in arr) {
Console.WriteLine(value);
}
}
}
실행 결과
첫 번째 목록... Programming Web Dev Database 복제 후... Programming Web Dev Database
실행 결과를 보면 원본 목록의 세 개 요소가 그대로 배열에 복사되었으며, 배열 크기가 10이므로 나머지 인덱스는 null로 남아 있는 것을 확인할 수 있습니다.
참고: 다른 목록 복제 방법들
CopyTo 외에도 C#에서는 목록을 복제하는 여러 방법이 있습니다.
- 생성자 활용:
new List<string>(myList)처럼 기존 목록을 생성자에 전달하면 새로운 목록이 복제됩니다. - ToList() 메서드: LINQ의
myList.ToList()를 사용하면 간결하게 목록을 복사할 수 있습니다. - GetRange() 메서드:
myList.GetRange(0, myList.Count)로 특정 범위의 요소만 복제할 수도 있습니다.
상황에 따라 적절한 방법을 선택하면 되지만, 배열 형태로 복사해야 하는 경우라면 CopyTo 메서드가 가장 직관적입니다.