이 항목에서는 배열 또는 컬렉션의 요소에 대해 수행할 변환, 검색 조건자 및 작업에 대한 일반 대리자의 개요를 제공합니다.
배열 및 목록을 다루기 위한 일반 대리자
Action<T> 제네릭 대리자는 지정된 형식의 요소에 대해 일부 작업을 수행하는 메서드를 나타냅니다. 요소에 대해 원하는 작업을 수행하는 메서드를 만들고, 해당 메서드를 나타내는 대리자의 Action<T> 인스턴스를 만든 다음, 배열과 대리자를 정적 제네릭 메서드에 Array.ForEach 전달할 수 있습니다. 배열의 모든 요소에 대해 메서드가 호출됩니다.
제네릭 클래스는 List<T> 대리자를 ForEach 사용하는 Action<T> 메서드도 제공합니다. 이 메서드는 제네릭이 아닙니다.
비고
이렇게 하면 제네릭 형식 및 메서드에 대한 흥미로운 점이 있습니다. 메서드는 Array.ForEach가 제네릭 형식이 아니기 때문에 정적(Shared
Visual Basic)이고 제네릭이어야 합니다. Array에서 작동할 형식을 지정할 수 있는 유일한 이유는 메서드 자체에 고유한 형식 매개변수 목록이 있기 때문입니다. 반면, 제네릭 List<T>.ForEach 이 아닌 메서드는 제네릭 클래스 List<T>에 속하므로 클래스의 형식 매개 변수만 사용합니다. 클래스는 강력한 형식이므로 메서드는 인스턴스 메서드가 될 수 있습니다.
Predicate<T> 제네릭 대리자는 특정 요소가 정의한 조건을 충족하는지 여부를 결정하는 메서드를 나타냅니다. Array의 다음 정적 제네릭 메서드와 함께 사용하여 요소 또는 요소 집합을 검색할 수 있습니다: Exists, Find, FindAll, FindIndex, FindLast, FindLastIndex, 및 TrueForAll.
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 원래 배열에서 새 형식의 배열을 생성하거나 List<T>.ConvertAll<TOutput>(Converter<T,TOutput>) , 원래 목록에서 새 형식의 목록을 생성하는 제네릭 인스턴스 메서드를 만듭니다.
대리자 연결
이러한 대리자를 사용하는 대부분의 메서드는 배열 또는 목록을 반환하며 다른 메서드에 전달할 수 있습니다. 예를 들어 배열의 특정 요소를 선택하고, 해당 요소를 새 형식으로 변환하고, 새 배열에 저장하려는 경우 제네릭 메서드에서 반환된 FindAll 배열을 제네릭 메서드에 ConvertAll 전달할 수 있습니다. 새 요소 형식에 자연 정렬 순서가 없는 경우 제네릭 메서드에서 반환된 배열을 ConvertAll 제네릭 메서드에 Sort<T>(T[], Comparison<T>) 전달할 수 있습니다.
참고하십시오
.NET