Collection 클래스 선택
업데이트: 2007년 11월
System.Collections 클래스는 주의하여 선택해야 합니다. 잘못된 형식을 사용할 경우 컬렉션의 사용이 제한될 수 있습니다.
다음과 같은 질문을 고려합니다.
요소 값을 검색한 후에 대개 요소가 폐기되는 순차적 목록이 필요합니까?
FIFO, LIFO 또는 임의와 같이 특정 순서로 요소에 액세스해야 합니까?
LinkedList<T> 제네릭 클래스는 처음에서 끝으로 또는 끝에서 처음으로 순차적 액세스를 허용합니다.
기타 컬렉션은 임의 액세스를 제공합니다.
각 요소를 인덱스별로 액세스해야 합니까?
ArrayList 및 StringCollection 클래스 및 List<T> 제네릭 클래스는 요소의 0부터 시작하는 인덱스를 기준으로 해당 요소에 대한 액세스를 제공합니다.
Hashtable, SortedList, ListDictionary 및 StringDictionary 클래스와 Dictionary<TKey, TValue> 및 SortedDictionary<TKey, TValue> 제네릭 클래스는 요소의 키를 기준으로 해당 요소에 대한 액세스를 제공합니다.
NameObjectCollectionBase 및 NameValueCollection 클래스와 KeyedCollection<TKey, TItem> 및 SortedList<TKey, TValue> 제네릭 클래스는 요소의 0부터 시작하는 인덱스 또는 키를 기준으로 해당 요소에 대한 액세스를 제공합니다.
각 요소에 하나의 값, 또는 하나의 키와 하나의 값 조합, 또는 하나의 키와 여러 값 조합이 포함되어야 합니까?
하나의 키 및 하나의 값: IDictionary 인터페이스 또는 IDictionary<TKey, TValue> 제네릭 인터페이스를 기반으로 컬렉션을 사용합니다.
키가 포함된 하나의 값: KeyedCollection<TKey, TItem> 제네릭 클래스를 사용합니다.
하나의 키와 여러 값: NameValueCollection 클래스를 사용합니다.
요소가 입력된 순서와 다르게 요소를 정렬해야 합니까?
Hashtable 클래스는 요소를 해시 코드별로 정렬합니다.
SortedList 클래스와 SortedDictionary<TKey, TValue> 및 SortedList<TKey, TValue> 제네릭 클래스는 IComparer 인터페이스 및 IComparer<T> 제네릭 인터페이스의 구현을 기반으로 요소를 키별로 정렬합니다.
ArrayList는 IComparer 구현을 매개 변수로 사용하는 Sort 메서드를 제공합니다. List<T> 제네릭 클래스는 IComparer<T> 제네릭 인터페이스 구현을 매개 변수로 사용하는 Sort 메서드를 제공합니다.
정보에 대한 빠른 검색이 필요합니까?
- 항목이 10개 이하인 작은 컬렉션의 경우 ListDictionary가 Hashtable보다 빠릅니다. Dictionary<TKey, TValue> 제네릭 클래스를 사용하면 SortedDictionary<TKey, TValue> 제네릭 클래스보다 빠르게 조회할 수 있습니다.
문자열만 수용하는 컬렉션이 필요합니까?
IList 기반의 StringCollection과 IDictionary 기반의 StringDictionary는 System.Collections.Specialized 네임스페이스에 있습니다.
또한 제네릭 형식 인수에 대해 String 클래스를 지정하여 System.Collections.Generic 네임스페이스의 제네릭 컬렉션 클래스를 강력한 형식의 문자열 컬렉션으로 사용할 수 있습니다.
LINQ to Objects
개체 형식이 IEnumerable 또는 IEnumerable<T>을 구현하는 경우 개발자는 LINQ to Objects 기능을 통해 LINQ 쿼리를 사용하여 메모리 내 개체에 액세스할 수 있습니다. LINQ 쿼리는 데이터 액세스를 위한 일반 패턴을 제공하고, 표준 foreach 루프에 비해 간결하고 쉽게 읽을 수 있으며, 필터링, 순서 지정 및 그룹화 기능을 제공합니다. 또한 LINQ 쿼리를 사용하면 성능이 향상됩니다. 자세한 내용은 LINQ to Objects를 참조하십시오.
참고 항목
참조
System.Collections.Specialized