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

C#에서 리스트(List)를 복제하거나 복사하는 방법 – CopyTo() 메서드 활용

C# 리스트 복사의 기본 개념

C#에서 List<string>과 같은 리스트를 복사하거나 복제하려면, 먼저 원본이 될 리스트를 생성해야 합니다.

List<string> myList = new List<string>();
myList.Add("One");
myList.Add("Two");

CopyTo() 메서드로 배열에 복사하기

리스트의 요소를 다른 컬렉션으로 옮기려면 CopyTo() 메서드를 활용할 수 있습니다. 문자열 배열을 선언한 뒤 CopyTo() 메서드를 호출하면, 리스트의 모든 요소가 배열로 복사됩니다.

string[] arr = new string[10];
myList.CopyTo(arr);

이때 주의할 점은 대상 배열의 크기가 리스트의 요소 수보다 크거나 같아야 한다는 것입니다. 배열의 공간이 부족하면 ArgumentException 예외가 발생하므로, 배열 크기를 미리 충분히 확보해 두는 것이 좋습니다.

전체 예제 코드

다음은 리스트를 1차원 문자열 배열로 복사하는 전체 코드입니다.

using System;
using System.Collections.Generic;
using System.Linq;

public class Demo {
   public static void Main() {
      List<string> myList = new List<string>();
      myList.Add("One");
      myList.Add("Two");
      myList.Add("Three");
      myList.Add("Four");

      Console.WriteLine("First list...");
      foreach(string value in myList) {
         Console.WriteLine(value);
      }

      string[] arr = new string[20];
      myList.CopyTo(arr);

      Console.WriteLine("After copy...");
      foreach(string value in arr) {
         Console.WriteLine(value);
      }
   }
}

실행 결과

First list...
One
Two
Three
Four
After copy...
One
Two
Three
Four

실행 결과를 보면 CopyTo() 메서드 호출 후 배열에 리스트의 네 개 요소가 순서대로 복사된 것을 확인할 수 있습니다. 이때 남는 인덱스(4번~19번)는 빈 값(null)으로 그대로 유지됩니다.

추가 팁: 리스트 간 복제 방법

배열이 아닌 다른 리스트로 복제하고 싶다면 생성자나 ToList() 메서드를 사용할 수 있습니다.

// 생성자 활용
List<string> clonedList = new List<string>(myList);

// LINQ의 ToList() 활용
List<string> copiedList = myList.ToList();

두 방법 모두 원본 리스트와 동일한 요소를 가진 새로운 리스트를 만들어 주며, 얕은 복사(shallow copy)로 수행된다는 점을 기억해 두면 좋습니다.