Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Array.FindAll() 메서드 완벽 가이드: 조건에 맞는 배열 요소 한 번에 찾기

C#의 Array.FindAll() 메서드는 지정된 조건자(Predicate)가 정의한 조건과 일치하는 모든 요소를 배열에서 검색하여 새로운 배열로 반환하는 정적 메서드입니다. 조건을 만족하는 요소가 여러 개일 때 유용하게 사용할 수 있습니다.

문법(Syntax)

Array.FindAll() 메서드의 기본 문법은 다음과 같습니다.

public static T[] FindAll<T> (T[] array, Predicate<T> match);

매개변수 설명:

  • array: 검색 대상이 되는 1차원 배열
  • match: 검색 조건을 정의하는 Predicate<T> 델리게이트

메서드는 조건과 일치하는 모든 요소를 담은 T 타입의 새 배열을 반환하며, 일치하는 요소가 없으면 빈 배열을 반환합니다.

사용 예제

다음 예제는 문자열 배열에서 'b'로 시작하는 모든 요소를 찾아 출력하는 코드입니다.

using System;
public class Demo{
    public static void Main(){
        Console.WriteLine("배열 요소...");
        string[] arr = { "car", "bike", "truck", "bus"};
        for (int i = 0; i < arr.Length; i++){
            Console.Write("{0} ", arr[i]);
        }
        Console.WriteLine();
        String[] res = Array.FindAll(arr, ele => ele.StartsWith("b",
        StringComparison.Ordinal));
        Console.Write("\n검색된 모든 요소...\n");
        for (int i = 0; i < res.Length; i++) {
            Console.WriteLine("{0}", res[i]);
        }
        Console.WriteLine();
    }
}

실행 결과(Output)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

배열 요소...
car bike truck bus
검색된 모든 요소...
bike
bus

핵심 포인트 정리

  • 람다 식 활용: 위 예제에서는 ele => ele.StartsWith("b", StringComparison.Ordinal) 람다 식을 사용해 'b'로 시작하는 요소만 필터링했습니다.
  • StringComparison.Ordinal: 대소문자를 구분하는 정확한 비교 방식으로, 문화권(culture)에 영향을 받지 않는 안정적인 문자열 비교를 제공합니다.
  • 원본 배열 불변: FindAll()은 원본 배열을 수정하지 않고, 조건에 맞는 요소들로 구성된 새로운 배열을 반환합니다.
  • 관련 메서드: 첫 번째 일치 요소만 찾으려면 Array.Find(), 인덱스를 찾으려면 Array.FindIndex(), 마지막 일치 요소는 Array.FindLast()를 사용할 수 있습니다.