이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

List<T>.FindIndex 메서드 (Int32, Int32, Predicate<T>)

 

게시 날짜: 2016년 11월

지정된 조건자에 정의된 조건과 일치하는 요소를 검색하고 지정된 인덱스부터 시작하여 지정된 수의 요소를 포함하는 List<T>의 요소 범위에서 일치하는 요소 중 첫 번째 요소의 인덱스(0부터 시작)를 반환합니다.

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

public int FindIndex(
	int startIndex,
	int count,
	Predicate<T> match
)

매개 변수

startIndex
Type: System.Int32

검색의 0부터 시작하는 인덱스입니다.

count
Type: System.Int32

검색할 섹션에 있는 요소 수입니다.

match
Type: System.Predicate<T>

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

반환 값

Type: System.Int32

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

Exception Condition
ArgumentNullException

matchnull인 경우

ArgumentOutOfRangeException

startIndexList<T>의 유효한 인덱스 범위를 벗어납니다.

또는

count가 0보다 작은 경우

또는

startIndexcountList<T>의 올바른 섹션을 지정하지 않습니다.

List<T> 에서 정방향으로 검색 됩니다 startIndex 에서 끝나는 startIndex plus count 1을 뺀 값 경우 count 는 0 보다 큽니다.

Predicate<T> 반환 하는 메서드에 대리자 true 개체에 전달 하는 경우 대리자에 정의 된 조건과 일치 합니다. 현재 요소의 List<T> 에 개별적으로 전달 되는 Predicate<T> 위임 합니다. 대리자에 서명을 합니다.

public bool methodName(T obj)

이 메서드는 선형 검색 수행 따라서이 메서드는 O (n) 작업의 경우 여기서 ncount합니다.

다음 예제에서는 정의 Employee 두 필드를 사용 하 여 클래스 NameId합니다. 정의 EmployeeSearch 단일 메서드를 사용 하 여 클래스 StartsWith, 나타내는 여부는 Employee.Name 필드의 지정한 부분에 제공 된 시작는 EmployeeSearch 클래스 생성자입니다. 이 메서드의 서명은 참고

public bool StartsWith(Employee e)

에 전달 될 수 있는 대리자의 서명과에 해당 하는 FindIndex 메서드. 이 예제에서는 인스턴스화합니다는 List<Employee> 개체를 추가 하는 다양 한 Employee 개체 수를 차례로 호출 하는 FindIndex(Int32, Int32, Predicate<T>) 컬렉션에서 전체 검색을 두 번 메서드 (즉, 멤버 인덱스 0부터에서 인덱스 Count -1). 첫 번째 처음으로 검색 Employee 개체 Name 필드 "J"로 시작 됩니다; 첫 번째로 검색 Employee 개체 Name 필드 "Ju"로 시작 합니다.

using System;
using System.Collections.Generic;

public class Employee : IComparable
{
   public String Name { get; set; }
   public int Id { get; set; }

   public int CompareTo(Object o )
   {
      Employee e = o as Employee;
      if (e == null)
         throw new ArgumentException("o is not an Employee object.");

      return Name.CompareTo(e.Name);
   }
}

public class EmployeeSearch
{
   String _s;

   public EmployeeSearch(String s)
   {
      _s = s;
   }

   public bool StartsWith(Employee e)
   {
      return e.Name.StartsWith(_s, StringComparison.InvariantCultureIgnoreCase);
   }
}

public class Example
{
   public static void Main()
   {
      var employees = new List<Employee>();
      employees.AddRange( new Employee[] { new Employee { Name = "Frank", Id = 2 },
                                           new Employee { Name = "Jill", Id = 3 },
                                           new Employee { Name = "Dave", Id = 5 },
                                           new Employee { Name = "Jack", Id = 8 },
                                           new Employee { Name = "Judith", Id = 12 },
                                           new Employee { Name = "Robert", Id = 14 },
                                           new Employee { Name = "Adam", Id = 1 } } );
      employees.Sort();

      var es = new EmployeeSearch("J");
      Console.WriteLine("'J' starts at index {0}",
                        employees.FindIndex(0, employees.Count - 1, es.StartsWith));

      es = new EmployeeSearch("Ju");
      Console.WriteLine("'Ju' starts at index {0}",
                        employees.FindIndex(0, employees.Count - 1,es.StartsWith));
   }
}
// The example displays the following output:
//       'J' starts at index 3
//       'Ju' starts at index 5

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
2.0 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Windows Phone Silverlight
8.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능
맨 위로 이동
표시: