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

C#에서 LinkedList 전체를 배열로 복사하는 방법

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이 발생합니다.