다음을 통해 공유


일반적으로 사용되는 컬렉션 형식

업데이트: 2007년 11월

컬렉션 형식은 해시 테이블, 쿼리, 스택, 사전, 목록 등의 일반적인 데이터 컬렉션입니다.

컬렉션은 ICollection 인터페이스, IList 인터페이스, IDictionary 인터페이스 또는 해당 제네릭 요소를 기반으로 합니다. IList 인터페이스 및 IDictionary 인터페이스는 모두 ICollection 인터페이스에서 파생되므로, 모든 컬렉션은 직접 또는 간접적으로 ICollection 인터페이스를 기반으로 합니다. IList 인터페이스를 기반으로 하는 컬렉션(예: Array, ArrayList 또는 List<T>) 또는 ICollection 인터페이스와 직접 관련된 컬렉션(예: Queue, Stack 또는 LinkedList<T>)에서 모든 요소에는 하나의 값만 포함됩니다. IDictionary 인터페이스를 기반으로 하는 컬렉션(예: HashtableSortedList 클래스 또는 Dictionary<TKey, TValue>SortedList<TKey, TValue> 제네릭 클래스)에서는 모든 요소에 키와 값이 모두 포함됩니다. KeyedCollection<TKey, TItem> 클래스는 값에 키가 포함된 값 목록이기 때문에 고유하며 목록이나 사전처럼 동작합니다.

강력한 형식 지정에는 제네릭 컬렉션을 사용하는 것이 가장 적합합니다. 그러나 사용 중인 언어에서 제네릭을 지원하지 않는 경우, System.Collections 네임스페이스는 CollectionBase, ReadOnlyCollectionBaseDictionaryBase와 같은 기본 컬렉션을 포함하며, 이 기본 컬렉션은 강력한 형식의 컬렉션 클래스를 만들도록 확장할 수 있는 추상 기본 클래스입니다.

컬렉션은 요소가 저장되는 방식, 요소가 정렬되는 방식, 검색이 수행되는 방식 및 비교가 이루어지는 방식에 따라 달라집니다. Queue 클래스 및 Queue<T> 제네릭 클래스는 FIFO(선입선출) 목록을 제공하지만 Stack 클래스 및 Stack<T> 제네릭 클래스는 LIFO(후입선출) 목록을 제공합니다. SortedList 클래스 및 SortedList<TKey, TValue> 제네릭 클래스는 정렬된 버전의 Hashtable 클래스 및 Dictionary<TKey, TValue> 제네릭 클래스를 제공합니다. Hashtable 또는 Dictionary<TKey, TValue>의 요소는 요소의 키로만 액세스할 수 있지만 SortedList 또는 KeyedCollection<TKey, TItem>의 요소는 요소의 키 또는 인덱스로 액세스가 가능합니다. 모든 컬렉션의 인덱스는 0부터 시작되지 않는 배열을 허용하는 Array를 제외하고 모두 0부터 시작됩니다.

LINQ to Objects 기능을 사용하면 개체 형식이 IEnumerable 또는 IEnumerable<T>을 구현하는 경우 LINQ 쿼리를 통해 메모리 내 개체에 액세스할 수 있습니다. LINQ 쿼리는 데이터 액세스를 위한 일반 패턴을 제공하고, 표준 foreach 루프에 비해 간결하고 쉽게 읽을 수 있으며, 필터링, 순서 지정 및 그룹화 기능을 제공합니다. 또한 LINQ 쿼리를 통해 성능을 향상시킬 수도 있습니다. 자세한 내용은 LINQ to Objects를 참조하십시오.

단원 내용

참조

관련 단원

  • 컬렉션 및 데이터 구조
    스택, 쿼리, 목록, 배열 및 구조체를 포함하여 .NET Framework에서 사용 가능한 여러 가지 컬렉션 형식에 대해 설명합니다.

  • .NET Framework의 제네릭
    .NET Framework에서 제공하는 제네릭 컬렉션, 대리자 및 인터페이스를 포함한 제네릭 기능에 대해 설명합니다. C#, Visual Basic 및 Visual C++에 대한 기능 설명서와 리플렉션 같은 지원 기술을 볼 수 있는 링크를 제공합니다.