다음을 통해 공유


배열과 목록을 조작하기 위한 제네릭 대리자

이 항목에서는 배열 또는 컬렉션의 요소에서 사용될 변환, 검색 조건자 및 작업에 대한 제네릭 대리자에 대해 간략하게 설명합니다.

배열과 목록을 조작하기 위한 제네릭 대리자

Action<T> 제네릭 대리자는 지정한 형식의 요소에서 일부 작업을 수행하는 메서드를 나타냅니다. 요소에서 원하는 작업을 수행하는 메서드를 만들고, 해당 메서드를 나타내는 Action<T> 대리자의 인스턴스를 만든 다음 Array.ForEach<T> 정적 제네릭 메서드에 해당 배열과 대리자를 전달합니다. 배열의 모든 요소에 대해 메서드가 호출됩니다.

또한 List<T> 제네릭 클래스는 Action<T> 대리자를 사용하는 ForEach 메서드도 제공합니다. 이 메서드는 제네릭이 아닙니다.

참고참고

이는 제네릭 형식과 메서드에 대한 흥미로운 점을 나타냅니다.Array가 제네릭 형식이 아니므로 Array.ForEach<T> 메서드는 정적(Visual Basic의 경우 Shared)이고 제네릭이어야 합니다. 해당 메서드에 고유한 형식 매개 변수 목록이 없기 때문에 작동할 Array.ForEach<T>의 형식을 지정할 수 있습니다.이와 반대로 제네릭이 아닌 List<T>.ForEach 메서드는 제네릭 클래스 List<T>에 속하기 때문에 해당 클래스의 형식 매개 변수를 사용하면 됩니다.클래스가 강력한 형식이므로 해당 메서드는 인스턴스 메서드가 될 수 있습니다.

Predicate<T> 제네릭 대리자는 특정 요소가 정의된 조건에 맞는지 여부를 확인하는 메서드를 나타냅니다. 이 메서드는 Array의 정적 제네릭 메서드인 Exists<T>, Find<T>, FindAll<T>, FindIndex, FindLast<T>, FindLastIndexTrueForAll<T>과 함께 사용하여 하나의 요소 또는 요소 집합을 검색할 수 있습니다.

Predicate<T>List<T> 제네릭 클래스의 해당하는 제네릭이 아닌 인스턴스 메서드와 함께 사용할 수도 있습니다.

Comparison<T> 제네릭 대리자를 사용하면 네이티브 정렬 순서가 없는 배열 또는 목록 요소에 정렬 순서를 제공하거나 네이티브 정렬 순서를 재정의할 수 있습니다. 비교를 수행하는 메서드를 만들고, 해당 메서드를 나타내는 Comparison<T> 대리자의 인스턴스를 만든 다음 Array.Sort<T>(T[], Comparison<T>) 정적 제네릭 메서드에 해당 배열과 대리자를 전달합니다. List<T> 제네릭 클래스는 해당하는 인스턴스 메서드 오버로드인 List<T>.Sort(Comparison<T>)를 제공합니다.

Converter<TInput, TOutput> 제네릭 대리자를 사용하면 두 형식 간의 변환을 정의하고, 한 형식의 배열을 다른 형식의 배열로 변환하거나, 한 형식의 목록을 다른 형식의 목록으로 변환할 수 있습니다. 기존 목록의 요소를 새 형식으로 변환하는 메서드를 만들고, 해당 메서드를 나타내는 대리자 인스턴스를 만든 다음, Array.ConvertAll<TInput, TOutput> 제네릭 정적 메서드를 사용하여 원래 배열에서 새 형식의 배열을 생성하거나 List<T>.ConvertAll<TOutput> 제네릭 인스턴스 메서드를 사용하여 원래 목록에서 새 형식의 목록을 생성합니다.

대리자 연결

대리자를 사용하는 여러 메서드는 다른 메서드로 전달할 수 있는 배열이나 목록을 반환합니다. 예를 들어, 배열의 특정 요소를 선택하려는 경우 해당 요소를 새 형식으로 변환하고 새 배열에 저장한 다음 FindAll<T> 제네릭 메서드에 의해 반환된 배열을 ConvertAll<TInput, TOutput> 제네릭 메서드로 전달할 수 있습니다. 새 요소 형식에 자연 정렬 순서가 없는 경우 ConvertAll<TInput, TOutput> 제네릭 메서드에 의해 반환된 배열을 Sort<T>(T[], Comparison<T>) 제네릭 메서드로 전달할 수 있습니다.

참고 항목

참조

System.Collections.Generic

System.Collections.ObjectModel

개념

.NET Framework의 제네릭

.NET Framework의 제네릭 컬렉션

제네릭 인터페이스

제네릭의 장점 및 제한 사항

제네릭의 공변성(Covariance)과 반공변성(Contravariance)