다음을 통해 공유


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

컬렉션 형식은 해시 테이블, 큐, 스택, 모음, 사전 및 목록과 같은 데이터를 수집하는 다양한 방법을 나타냅니다.

모든 컬렉션은 ICollection 인터페이스 또는 ICollection<T> 인터페이스를 직접 또는 간접적으로 기반으로 합니다. IListIDictionary 제네릭 대응은 모두 이러한 두 인터페이스에서 파생됩니다.

IList 또는 ICollection에 직접 기반을 둔 컬렉션에서는 모든 요소에 값만 포함됩니다. 이러한 형식은 다음과 같습니다.

인터페이스를 기반으로 IDictionary 하는 컬렉션에서 모든 요소에는 키와 값이 모두 포함됩니다. 이러한 형식은 다음과 같습니다.

클래스는 KeyedCollection<TKey,TItem> 값 내에 포함된 키가 있는 값 목록이므로 고유합니다. 결과적으로 목록과 사전처럼 동작합니다.

효율적인 다중 스레드 컬렉션 액세스가 필요한 경우 네임스페이스에서 System.Collections.Concurrent 제네릭 컬렉션을 사용합니다.

QueueQueue<T> 클래스는 선입선출 목록을 제공합니다. StackStack<T> 클래스는 후입선출 목록을 제공합니다.

강력한 입력

제네릭 컬렉션은 강력한 입력에 가장 적합한 솔루션입니다. 예를 들어, Int32가 아닌 다른 형식의 요소를 List<Int32> 컬렉션에 추가하면 컴파일 시 오류가 발생합니다. 그러나 언어에서 제네릭을 System.Collections 지원하지 않는 경우 네임스페이스에는 강력한 형식의 컬렉션 클래스를 만들기 위해 확장할 수 있는 추상 기본 클래스가 포함됩니다. 이러한 기본 클래스는 다음과 같습니다.

컬렉션의 차이

컬렉션은 요소를 저장, 정렬 및 비교하는 방법과 검색을 수행하는 방법에 따라 다릅니다.

SortedList 클래스와 SortedList<TKey,TValue> 제네릭 클래스는 Hashtable 클래스와 Dictionary<TKey,TValue> 제네릭 클래스의 정렬된 버전을 제공합니다.

모든 컬렉션은 0부터 시작하는 인덱스를 사용하지만, Array은 0이 아닌 인덱스를 사용하는 배열을 허용합니다.

SortedList 또는 KeyedCollection<TKey,TItem>의 요소에 키나 요소의 인덱스로 접근할 수 있습니다. Hashtable 또는 Dictionary<TKey,TValue>의 요소는 해당 요소의 키로만 접근할 수 있습니다.

컬렉션 형식에서 LINQ 사용

LINQ to Objects 기능은 구현 IEnumerable 하거나 IEnumerable<T>구현하는 모든 형식의 메모리 내 개체에 액세스하기 위한 일반적인 패턴을 제공합니다. LINQ 쿼리는 루프와 같은 foreach 표준 구문에 비해 몇 가지 이점이 있습니다.

  • 간결하고 이해하기 쉽습니다.
  • 데이터를 필터링, 정렬 및 그룹화할 수 있습니다.
  • 성능을 향상시킬 수 있습니다.

자세한 내용은 LINQ to Objects(C#),LINQ to Objects(Visual Basic)PLINQ(병렬 LINQ)를 참조하세요.

제목 설명
컬렉션 및 데이터 구조 스택, 큐, 목록, 배열 및 사전을 포함하여 .NET에서 사용할 수 있는 다양한 컬렉션 형식에 대해 설명합니다.
해시 테이블 및 사전 컬렉션 형식 제네릭 및 비제네릭 해시 기반 사전 형식의 기능을 설명합니다.
정렬된 컬렉션 형식 목록 및 집합에 대한 정렬 기능을 제공하는 클래스에 대해 설명합니다.
제네릭 .NET에서 제공하는 제네릭 컬렉션, 대리자 및 인터페이스를 포함하여 제네릭 기능에 대해 설명합니다. C#, Visual Basic 및 Visual C++에 대한 기능 설명서와 리플렉션과 같은 지원 기술에 대한 링크를 제공합니다.

참고 문헌

System.Collections

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey,TValue>