System.Collections 클래스는 주의하여 선택해야 합니다. 잘못된 형식을 사용할 경우 컬렉션의 사용이 제한될 수 있습니다.
다음과 같은 질문을 고려합니다.
-
요소 값을 검색한 후에 대개 요소가 폐기되는 순차적 목록이 필요합니까?
-
FIFO, LIFO 또는 임의와 같이 특정 순서로 요소에 액세스해야 합니까?
-
Queue 클래스 및 Queue 제네릭 클래스는 FIFO 액세스를 제공합니다.
-
Stack 클래스 및 Stack 제네릭 클래스는 LIFO 액세스를 제공합니다.
-
LinkedList 제네릭 클래스는 처음에서 끝으로 또는 끝에서 처음으로 순차적 액세스를 허용합니다.
-
기타 컬렉션은 임의 액세스를 제공합니다.
-
-
각 요소를 인덱스별로 액세스해야 합니까?
-
ArrayList 및 StringCollection 클래스 및 List 제네릭 클래스는 요소의 0부터 시작하는 인덱스를 기준으로 해당 요소에 대한 액세스를 제공합니다.
-
Hashtable, SortedList, ListDictionary 및 StringDictionary 클래스와 Dictionary 및 SortedDictionary 제네릭 클래스는 요소의 키를 기준으로 해당 요소에 대한 액세스를 제공합니다.
-
NameObjectCollectionBase 및 NameValueCollection 클래스와 KeyedCollection 및 SortedList 제네릭 클래스는 요소의 0부터 시작하는 인덱스 또는 키를 기준으로 해당 요소에 대한 액세스를 제공합니다.
-
-
각 요소에 하나의 값, 또는 하나의 키와 하나의 값 조합, 또는 하나의 키와 여러 값 조합이 포함되어야 합니까?
-
하나의 키 및 하나의 값: IDictionary 인터페이스 또는 IDictionary 제네릭 인터페이스를 기반으로 컬렉션을 사용합니다.
-
키가 포함된 하나의 값: KeyedCollection 제네릭 클래스를 사용합니다.
-
하나의 키와 여러 값: NameValueCollection 클래스를 사용합니다.
-
요소가 입력된 순서와 다르게 요소를 정렬해야 합니까?
-
정보에 대한 빠른 검색이 필요합니까?
-
항목이 10개 이하인 작은 컬렉션의 경우 ListDictionary가 Hashtable보다 빠릅니다. SortedDictionary 제네릭 클래스를 사용하면 Dictionary 제네릭 클래스보다 빠르게 조회할 수 있습니다.
-
-
문자열만 수용하는 컬렉션이 필요합니까?
-
IList 기반의 StringCollection과 IDictionary 기반의 StringDictionary는 System.Collections.Specialized 네임스페이스에 있습니다.
-
또한 제네릭 형식 인수에 대해 String 클래스를 지정하여 System.Collections.Generic 네임스페이스의 제네릭 컬렉션 클래스를 강력한 형식의 문자열 컬렉션으로 사용할 수 있습니다.
-
