C#에서 LinkedList<T>의 모든 요소를 배열로 복사하려면 CopyTo() 메서드를 사용합니다. 이 메서드는 대상 배열과 복사를 시작할 인덱스를 매개변수로 받으며, LinkedList의 요소들을 지정한 위치부터 순서대로 배열에 저장합니다.
메서드 시그니처
public void CopyTo (T[] array, int index);
- array: LinkedList 요소가 복사될 대상 배열입니다.
- index: 복사가 시작되는 배열의 인덱스입니다.
예제 1: 배열의 시작 위치부터 복사
다음은 LinkedList 전체를 배열의 인덱스 0부터 복사하는 예제입니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
LinkedList<int> list = new LinkedList<int>();
list.AddLast(100);
list.AddLast(200);
list.AddLast(300);
int[] strArr = new int[5];
list.CopyTo(strArr, 0);
foreach(int str in strArr) {
Console.WriteLine(str);
}
}
}출력 결과
100 200 300 0 0
배열의 크기는 5이지만 LinkedList에는 요소가 3개뿐이므로, 값이 복사된 이후 남은 2개의 위치에는 정수형의 기본값인 0이 그대로 유지됩니다.
예제 2: 특정 인덱스부터 복사
이번에는 배열의 중간 위치인 인덱스 4부터 복사하는 예제를 살펴보겠습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
LinkedList<int> list = new LinkedList<int>();
list.AddLast(100);
list.AddLast(200);
list.AddLast(300);
int[] strArr = new int[10];
list.CopyTo(strArr, 4);
foreach(int str in strArr) {
Console.WriteLine(str);
}
}
}출력 결과
0 0 0 0 100 200 300 0 0 0
복사 시작 인덱스가 4이므로 배열의 앞 4개 요소는 기본값 0으로 채워져 있고, 인덱스 4부터 6까지 LinkedList의 값(100, 200, 300)이 순서대로 복사됩니다. 나머지 뒤쪽 3개 요소 역시 기본값 0을 유지합니다.
주의 사항
- 대상 배열의 크기는 (시작 인덱스 + LinkedList의 요소 수) 이상이어야 합니다. 그렇지 않으면 ArgumentException이 발생합니다.
- 배열이 null이면 ArgumentNullException, 인덱스가 음수이거나 배열 범위를 벗어나면 ArgumentOutOfRangeException이 발생합니다.