프로그래밍하다 보면 여러 개의 개체를 구조적으로 관리하는 것은 자주 발생합니다. C#에서는 요소 개체의 집합체인 컬렉션을 다양하게 제공하고 있으며 같은 인터페이스를 기반으로 구현 약속하여 하나의 컬렉션 사용법을 익히면 다른 컬렉션을 사용법을 익히기 쉽습니다.
C#에서 제공되는 컬렉션에는 하나의 개체로 보관하는 컬렉션들과 키와 값을 쌍으로 보관하는 컬렉션들이 있습니다. 하나의 개체로 보관하는 컬렉션들은 IList 인터페이스를 기반이거나 ICollection 인터페이스를 기반으로 정의되어 있습니다. 그리고 키와 쌍으로 보관하는 컬렉션들은 IDictionary 인터페이스를 기반으로 정의되어 있습니다.
또한, IList와 IDictionary 인터페이스는 모두 ICollection 인터페이스를 기반으로 정의되어 있어서 같은 방법으로 사용할 수 있습니다.
그리고 C#의 일반적인 컬렉션은 어떠한 형식 요소든지 보관할 수 있습니다. 만약 특정 형식의 개체만 보관할 수 있게 보관할 요소의 형식을 명확하게 명시하여 강력하게 형식 지정하는 제네릭 컬렉션을 제공하고 있습니다.
다음은 C#에서 제공되는 컬렉션 중에서 자주 사용되는 것들입니다.
다음은 C#에서 제공되는 컬렉션 중에서 자주 사용되는 것들입니다.
인터페이스 | 클래스 이름 | 설명 |
IList | Array | 배열 형식의 기반 클래스, 용량이 고정 |
IList | ArrayList | 자동 확장이 되는 배열의 고급 버전 |
IList | List<T> | 제네릭 컬렉션 |
IDictionary | Hashtable | 해쉬 함수를 통해 빠른 검색이 가능 |
IDictionary | SortedList | 키를 기준으로 정렬 |
IDictionary | SortedList<TKey,TValue> | 제네릭 컬렉션 |
IDictionary | Dictionary<TKey, TValue> | 제네릭 컬렉션 |
IDictionary | SortedDictionary<TKey, TValue> | 제네릭 컬렉션, 키를 기준으로 정렬 |
ICollection | Queue | 선입선출(FIFO) |
ICollection | Queue<T> | 제네릭 컬렉션 |
ICollection | Stack | 후입선출(LIFO) |
ICollection | Stack<T> | 제네릭 컬렉션 |