C#에서 ArrayList에 저장된 모든 요소를 새로운 배열로 복사하려면 ToArray() 메서드를 사용하면 됩니다. 이 메서드는 ArrayList의 요소를 순서대로 object 타입 배열에 담아 반환합니다.
아래 예제를 통해 실제 동작 방식을 살펴보겠습니다.
예제 1: 문자열 요소 복사하기
using System;
using System.Collections;
public class Demo {
public static void Main(){
ArrayList list = new ArrayList(10);
list.Add("A");
list.Add("B");
list.Add("C");
list.Add("D");
list.Add("E");
list.Add("F");
list.Add("G");
list.Add("H");
list.Add("I");
list.Add("J");
Console.WriteLine("ArrayList 요소...");
foreach(string str in list){
Console.WriteLine(str);
}
Console.WriteLine("ArrayList에서 복사한 배열 요소...");
object[] ob = list.ToArray();
foreach(string str in ob){
Console.WriteLine(str);
}
}
}출력 결과
ArrayList 요소... A B C D E F G H I J ArrayList에서 복사한 배열 요소... A B C D E F G H I J
코드 설명
먼저 초기 용량이 10인 ArrayList를 생성하고, 알파벳 A부터 J까지 문자열을 추가했습니다. 그런 다음 list.ToArray()를 호출하여 ArrayList의 모든 요소를 object[] 배열로 복사했습니다. 마지막으로 foreach 반복문을 통해 원본 ArrayList와 복사된 배열의 내용을 각각 출력하여 두 데이터가 동일함을 확인할 수 있습니다.
예제 2: 정수 요소 복사하기
이번에는 정수형 데이터를 저장한 ArrayList를 배열로 복사하는 예제입니다.
using System;
using System.Collections;
public class Demo {
public static void Main(){
ArrayList list = new ArrayList(10);
list.Add(100);
list.Add(200);
list.Add(300);
Console.WriteLine("ArrayList 요소...");
foreach(int val in list){
Console.WriteLine(val);
}
Console.WriteLine("ArrayList에서 복사한 배열 요소...");
object[] ob = list.ToArray();
foreach(int val in ob){
Console.WriteLine(val);
}
}
}출력 결과
ArrayList 요소... 100 200 300 ArrayList에서 복사한 배열 요소... 100 200 300
참고 사항
ToArray() 메서드는 항상 object[] 타입의 배열을 반환합니다. 만약 특정 타입의 배열이 필요하다면 ToArray(typeof(int))처럼 타입을 인자로 전달하는 오버로드 버전을 사용하거나, 형 변환(casting)을 활용할 수 있습니다.
또한 최신 C# 개발에서는 타입 안정성이 보장되는 제네릭 컬렉션인 List<T> 사용이 권장됩니다. 다만 레거시 코드나 비제네릭 컬렉션을 다뤄야 하는 상황에서는 위와 같은 방법으로 ArrayList의 요소를 손쉽게 배열로 변환할 수 있습니다.