내보내기(0) 인쇄
모두 확장

List.FindLastIndex 메서드 (Int32, Int32, 제네릭 Predicate)

참고: 이 메서드는 .NET Framework 버전 2.0에서 새로 추가되었습니다.

지정된 조건자에 정의된 조건과 일치하는 요소를 검색하고, 지정된 수의 요소를 포함하고 지정된 인덱스에서 끝나는 List의 요소 범위에서 마지막으로 검색한 요소의 인덱스(0부터 시작)를 반환합니다.

네임스페이스: System.Collections.Generic
어셈블리: mscorlib(mscorlib.dll)

public int FindLastIndex (
	int startIndex,
	int count,
	Predicate<T> match
)
public int FindLastIndex (
	int startIndex, 
	int count, 
	Predicate<T> match
)
public function FindLastIndex (
	startIndex : int, 
	count : int, 
	match : Predicate<T>
) : int

매개 변수

startIndex

역방향 검색 시작 인덱스(0부터 시작)입니다.

count

검색할 영역에 있는 요소 수입니다.

match

검색할 요소의 조건을 정의하는 Predicate 대리자입니다.

반환 값

match에 정의된 조건과 일치하는 요소가 있으면 마지막으로 검색한 요소의 인덱스(0부터 시작)이고, 그렇지 않으면 -1입니다.

예외 형식조건

ArgumentNullException

match가 Null 참조(Visual Basic의 경우 Nothing)인 경우

ArgumentOutOfRangeException

startIndexList의 유효한 인덱스 범위 밖에 있는 경우

- 또는 -

count가 0보다 작은 경우

- 또는 -

startIndexcountList에서 올바른 섹션을 나타내지 않는 경우

ListstartIndex부터 startIndex - count + 1(count가 0보다 큰 경우)까지 역방향으로 검색됩니다.

Predicate는 전달된 개체가 대리자에 정의된 조건과 일치하는 경우 true를 반환하는 메서드의 대리자입니다. 현재 List의 요소는 개별적으로 Predicate 대리자에게 전달됩니다.

이 메서드는 선형 검색을 수행하기 때문에 O(n) 연산입니다. 여기서 ncount입니다.

다음 코드 예제에서는 FindLastIndex 메서드의 세 오버로드를 모두 보여 줍니다. 문자열의 List이 만들어집니다. 여기에는 공룡 이름이 8개 포함되고 위치 1과 5에 있는 두 이름은 "saurus"로 끝납니다. 이 코드 예제에서는 EndsWithSaurus라는 검색 조건자 메서드도 정의합니다. 이 메서드는 문자열 매개 변수를 사용하고 입력 문자열이 "saurus"로 끝나는지 여부를 나타내는 부울 값을 반환합니다.

FindLastIndex(제네릭 Predicate) 메서드 오버로드는 목록의 끝 부분부터 뒤로 이동하면서 각 요소를 차례로 EndsWithSaurus 메서드에 전달합니다. EndsWithSaurus 메서드가 위치 5에 있는 요소에 대해 true를 반환하면 검색이 중지됩니다.

Note참고

C#과 Visual Basic에서는 Predicate<string> 대리자(Visual Basic의 경우 Predicate(Of String))를 명시적으로 만들 필요가 없습니다. 이러한 언어에서는 컨텍스트에서 올바른 대리자를 유추하여 자동으로 만듭니다.

FindLastIndex(Int32,제네릭 Predicate) 메서드 오버로드를 사용하여 위치 4부터 목록의 시작 부분까지 목록을 뒤로 검색합니다. 이 메서드 오버로드는 위치 1에서 요소를 찾습니다. 마지막으로 FindLastIndex(Int32,Int32,제네릭 Predicate) 오버로드를 사용하여 위치 4부터 뒤로 세 요소 목록의 범위를 검색합니다(즉, 요소 4, 3, 2). 이 범위에는 "saurus"로 끝나는 공룡 이름이 없기 때문에 이 오버로드는 -1을 반환합니다.

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();

        dinosaurs.Add("Compsognathus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Oviraptor");
        dinosaurs.Add("Velociraptor");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Dilophosaurus");
        dinosaurs.Add("Gallimimus");
        dinosaurs.Add("Triceratops");

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nFindLastIndex(EndsWithSaurus): {0}", 
            dinosaurs.FindLastIndex(EndsWithSaurus));

        Console.WriteLine("\nFindLastIndex(4, EndsWithSaurus): {0}",
            dinosaurs.FindLastIndex(4, EndsWithSaurus));

        Console.WriteLine("\nFindLastIndex(4, 3, EndsWithSaurus): {0}",
            dinosaurs.FindLastIndex(4, 3, EndsWithSaurus));
    }

    // Search predicate returns true if a string ends in "saurus".
    private static bool EndsWithSaurus(String s)
    {
        if ((s.Length > 5) && 
            (s.Substring(s.Length - 6).ToLower() == "saurus"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

FindLastIndex(EndsWithSaurus): 5

FindLastIndex(4, EndsWithSaurus): 1

FindLastIndex(4, 3, EndsWithSaurus): -1
 */

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

.NET Framework

2.0에서 지원

.NET Compact Framework

2.0에서 지원

커뮤니티 추가 항목

추가
표시:
© 2015 Microsoft