다음을 통해 공유


제네릭 컬렉션 사용 기준

제네릭 컬렉션을 사용하면 기본 컬렉션 형식에서 파생되고 형식별 멤버를 구현하지 않고도 형식 안전성의 자동 이점을 얻을 수 있습니다. 제네릭 컬렉션 형식은 일반적으로 컬렉션 요소가 값 형식일 경우 요소들을 박싱할 필요가 없으므로 해당 비제네릭 컬렉션 형식(및 비제네릭 기본 컬렉션 형식에서 파생된 형식)보다 성능이 뛰어납니다.

.NET Standard 1.0 이상을 대상으로 하는 프로그램의 경우 여러 스레드가 컬렉션에서 System.Collections.Concurrent 항목을 동시에 추가하거나 제거할 수 있는 경우 네임스페이스에서 제네릭 컬렉션 클래스를 사용합니다. 또한 불변성이 필요한 경우 네임스페이스의 제네릭 컬렉션 클래스를 System.Collections.Immutable 고려합니다.

다음 제네릭 형식은 기존 컬렉션 형식에 해당합니다.

추가 형식

제네릭 컬렉션 형식 중에서 일부는 대응하는 비제네릭 컬렉션 형식이 없습니다. 여기에는 다음과 같은 항목이 포함됩니다.

변경할 수 없는 빌더

앱에서 불변성 기능을 원하는 경우 네임스페이 System.Collections.Immutable 스는 사용할 수 있는 제네릭 컬렉션 형식을 제공합니다. 변경할 수 없는 모든 컬렉션 형식은 여러 변형을 수행할 때 성능을 최적화할 수 있는 클래스를 제공합니다 Builder . 클래스는 Builder 변경 가능한 상태로 작업을 일괄 처리합니다. 모든 변형이 완료되면 메서드를 호출 ToImmutable 하여 모든 노드를 "고정"하고 변경할 수 없는 제네릭 컬렉션(예: .)을 ImmutableList<T>만듭니다.

제네릭이 아닌 Builder 메서드를 호출하여 객체를 만들 수 있습니다. 인스턴스Builder에서 ToImmutable()을(를) 호출할 수 있습니다. 마찬가지로, Immutable* 컬렉션에서 ToBuilder()을 호출하여 제네릭 불변 컬렉션으로부터 빌더 인스턴스를 생성할 수 있습니다. 다음은 다양한 Builder 형식입니다.

LINQ to Objects (객체에 대한 LINQ)

LINQ to Objects 기능을 사용하면 개체 형식이 System.Collections.IEnumerable 또는 System.Collections.Generic.IEnumerable<T> 인터페이스를 구현하고 있는 한 LINQ 쿼리를 사용하여 메모리 내 개체에 액세스할 수 있습니다. LINQ 쿼리는 데이터에 액세스하기 위한 일반적인 패턴을 제공합니다. 는 일반적으로 표준 foreach 루프보다 간결하고 읽기 가능하며 필터링, 순서 지정 및 그룹화 기능을 제공합니다. LINQ 쿼리는 성능을 향상시킬 수도 있습니다. 자세한 내용은 LINQ to Objects(C#),LINQ to Objects(Visual Basic)PLINQ(병렬 LINQ)를 참조하세요.

추가 기능

일부 제네릭 형식에는 비제네릭 컬렉션 형식에서 찾을 수 없는 기능이 있습니다. 예를 들어 List<T> 비제너릭 ArrayList 클래스에 해당하는 클래스에는 목록 검색을 위한 메서드를 지정할 수 있는 대리자, 목록의 각 요소에서 작동하는 메서드를 나타내는 대리자, Predicate<T> 형식 간 변환을 정의할 수 있는 대리자 등 Action<T>Converter<TInput,TOutput> 제네릭 대리자를 허용하는 여러 메서드가 있습니다.

List<T> 클래스를 사용하면 목록을 정렬하고 검색하기 위한 고유한 IComparer<T> 제네릭 인터페이스 구현을 지정할 수 있습니다. 클래스 SortedDictionary<TKey,TValue>SortedList<TKey,TValue>도 이 기능을 갖추고 있습니다. 또한 이러한 클래스를 사용하면 컬렉션을 만들 때 비교자를 지정할 수 있습니다. 비슷한 방식으로 Dictionary<TKey,TValue>KeyedCollection<TKey,TItem> 클래스는 고유한 같음 비교자를 지정할 수 있게 합니다.

참고하십시오