C#에서 일반 배열은 한 번 선언하면 크기를 변경할 수 없습니다. 하지만 실제 개발 환경에서는 데이터의 개수가 실행 중에 달라지는 경우가 많기 때문에, 크기가 고정된 정적 배열보다 유연하게 늘어나고 줄어들 수 있는 동적 배열(Dynamic Array)이 훨씬 유용합니다.
ArrayList란 무엇인가?
C#에서 동적으로 배열을 생성하려면 System.Collections 네임스페이스에 포함된 ArrayList 컬렉션을 사용할 수 있습니다. ArrayList는 다음과 같은 특징을 가집니다.
- 요소를 개별적으로 인덱싱할 수 있는 순서 있는 컬렉션을 나타냅니다.
- 동적 메모리 할당을 지원하여 요소 추가 시 크기가 자동으로 확장됩니다.
- 항목의 추가(Add), 검색(Search), 정렬(Sort) 등 다양한 작업을 손쉽게 수행할 수 있습니다.
예제 코드
다음 예제는 C#에서 ArrayList를 사용해 동적으로 배열을 생성하고 요소를 추가하는 방법을 보여줍니다.
using System;
using System.Collections;
namespace CollectionApplication {
class Program {
static void Main(string[] args) {
ArrayList al = new ArrayList();
al.Add(99);
al.Add(47);
al.Add(64);
Console.WriteLine("Count: {0}", al.Count);
Console.Write("List: ");
foreach (int i in al) {
Console.Write(i + " ");
}
Console.WriteLine();
Console.ReadKey();
}
}
}실행 결과
Count: 3 List: 99 47 64
코드 설명
위 코드에서는 먼저 ArrayList 객체를 생성한 뒤, Add() 메서드를 통해 세 개의 정수 값을 순차적으로 추가했습니다. 별도의 크기 지정 없이 요소가 추가될 때마다 내부 용량이 자동으로 조정되는 것을 확인할 수 있습니다.
al.Count: 현재 리스트에 저장된 요소의 개수를 반환합니다.foreach문: 리스트의 모든 요소를 순회하며 출력합니다.
참고: 현대적인 대안, List<T>
ArrayList는 모든 요소를 object 타입으로 저장하기 때문에 값 타입을 다룰 때 박싱(boxing)과 언백싱(unboxing)으로 인한 성능 저하가 발생할 수 있습니다. 따라서 최신 C# 프로젝트에서는 제네릭 컬렉션인 List<T>(System.Collections.Generic 네임스페이스)을 사용하는 것이 권장됩니다. 사용법은 ArrayList와 거의 동일하면서도 타입 안전성과 성능 면에서 더 우수합니다.