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

C#에서 제네릭 List(목록)를 복제하는 방법 총정리

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 메서드가 가장 직관적입니다.