반응형
FindIndex 메서드는 리스트에서 특정 조건을 만족하는 첫 번째 요소의 인덱스를 찾는 데 사용됩니다.
사용 방법:
1. FindIndex(Predicate<T> match):
- Predicate<T> 델리게이트를 사용하여 조건을 정의합니다.
- 델리게이트는 리스트의 각 요소를 검사하고, 조건을 만족하는 경우 true를 반환합니다.
- 조건을 만족하는 첫 번째 요소의 인덱스를 반환합니다.
- 조건은 만족하는 요소가 없으면 -1을 반환합니다.
2. FindIndex(int startIndex, Predicate<T> match):
- 검색을 시작할 인덱스를 지정합니다.
- startIndex는 0부터 시작하며, 리스트의 크기보다 크거나 같을 수 없습니다.
- startIndex 이후에 조건을 만족하는 첫 번째 요소의 인덱스를 반환합니다.
- 조건은 만족하는 요소가 없으면 -1을 반환합니다.
3. FindIndex(int startIndex, int count, Predicate<T> match):
- 검색 범위를 지정합니다.
- startIndex는 0부터 시작하며, 리스트의 크기보다 크거나 같을 수 없습니다.
- count는 검색할 요소의 수입니다.
- startIndex부터 count만큼 범위애서 조건을 만족하는 첫 번째 요소의 인덱스를 반환합니다.
- 조건을 만족하는 요소가 없으면 -1을 반환합니다.
예시:
List<int> numbers = new List<int>() { 1, 2, 3, 4, 5 };
// 짝수를 찾는 예시
int evenIndex = numbers.FindIndex(x => x % 2 == 0);
if (evenIndex != -1)
{
Console.WriteLine("첫 번째 짝수의 인덱스: {0}", evenIndex);
}
else
{
Console.WriteLine("짝수가 없습니다.");
}
// 3보다 큰 값을 찾는 예시
int greaterThan3Index = numbers.FindIndex(2, 3, x => x > 3);
if (greaterThan3Index != -1)
{
Console.WriteLine("3보다 큰 값의 첫 번째 인덱스 (2번째 요소부터 3개 검색): {0}", greaterThan3Index);
}
else
{
Console.WriteLine("3보다 큰 값이 없습니다 (2번째 요소부터 3개 검색).");
}
최적화 팁:
- FindIndex 메서드는 리스트의 모든 요소를 검사하기 때문에, 리스트 크기가 클 경우 성능 저하를 초래할 수 있습니다.
- 성능이 중요한 경우, BinarySearch 메서드를 사용하여 정렬된 리스트에서 특정 값을 찾는 것이 더 효율적일 수 있습니다.
- FindAll 메서드는 조건을 만족하는 모든 요소를 찾는 데 사용할 수 있습니다.
이 글을 통해 C# List<T> 클래스의 FindIndex 메서드를 자세하게 이해하고 다양한 상황에 활용할 수 있을 것입니다.
댓글을 통해 여러분의 의견을 공유해주세요!
'C#' 카테고리의 다른 글
Costura.Fody : 참조 DLL 라이브러리 하나로 합치기 (0) | 2024.07.08 |
---|---|
생성자 체이닝 (Constructor Chaining) (0) | 2024.05.14 |
객체 생성 : Activator.CreateInstance와 new(T) (0) | 2023.12.16 |
C# 비트 연산 : enum을 flag로 활용하는 방법 (0) | 2023.12.11 |
C#에서 class와 struct의 차이점 (0) | 2023.12.06 |