List<T>.FindIndex Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Выполняет поиск элемента, соответствующего условиям, определенным заданным предикатом, и возвращает отсчитываемый от нуля индекс первого вхождения в List<T> пределах или части элемента. Этот метод возвращает -1, если элемент, соответствующий условиям, не найден.
Перегрузки
| Имя | Описание |
|---|---|
| FindIndex(Int32, Int32, Predicate<T>) |
Выполняет поиск элемента, соответствующего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов в List<T> указанном индексе, который начинается с указанного индекса и содержит указанное число элементов. |
| FindIndex(Predicate<T>) |
Выполняет поиск элемента, соответствующего условиям, определенным указанным предикатом, и возвращает отсчитываемый от нуля индекс первого вхождения в целом List<T>. |
| FindIndex(Int32, Predicate<T>) |
Выполняет поиск элемента, соответствующего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов в диапазоне элементов, List<T> который расширяется от указанного индекса до последнего элемента. |
FindIndex(Int32, Int32, Predicate<T>)
- Исходный код:
- List.cs
- Исходный код:
- List.cs
- Исходный код:
- List.cs
- Исходный код:
- List.cs
- Исходный код:
- List.cs
Выполняет поиск элемента, соответствующего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов в List<T> указанном индексе, который начинается с указанного индекса и содержит указанное число элементов.
public:
int FindIndex(int startIndex, int count, Predicate<T> ^ match);
public int FindIndex(int startIndex, int count, Predicate<T> match);
member this.FindIndex : int * int * Predicate<'T> -> int
Public Function FindIndex (startIndex As Integer, count As Integer, match As Predicate(Of T)) As Integer
Параметры
- startIndex
- Int32
Отсчитываемый от нуля начальный индекс поиска.
- count
- Int32
Количество элементов в разделе для поиска.
- match
- Predicate<T>
Делегат Predicate<T> , определяющий условия элемента для поиска.
Возвращаемое значение
Отсчитываемый от нуля индекс первого вхождения элемента, соответствующего условиям, определенным matchв случае обнаружения; в противном случае — значение -1.
Исключения
match равно null.
startIndexнаходится за пределами диапазона допустимых индексов для .List<T>
–или–
count меньше 0.
–или–
startIndex и count не указывайте допустимый раздел в элементе List<T>.
Примеры
В следующем примере определяется Employee класс с двумя полями Name и Id. Он также определяет EmployeeSearch класс с одним методом, StartsWithкоторый указывает, начинается ли Employee.Name поле с указанной подстроки, предоставленной конструктору EmployeeSearch класса. Обратите внимание на сигнатуру этого метода
public bool StartsWith(Employee e)
Public Function StartsWith(e As Employee) As Boolean
соответствует сигнатуре делегата, который можно передать методу FindIndex . В примере создается экземпляр List<Employee> объекта, добавляется к нему несколько Employee объектов, а затем вызывается FindIndex(Int32, Int32, Predicate<T>) метод дважды для поиска всей коллекции (то есть элементов из индекса 0 в индекс Count - 1). При первом поиске первого объекта, поле которого Employee начинается с "J"; во второй раз он ищет первый NameEmployee объект, поле которого 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
Imports System.Collections.Generic
Public Class Employee : Implements IComparable
Public Property Name As String
Public Property Id As Integer
Public Function CompareTo(o As Object) As Integer _
Implements IComparable.CompareTo
Dim e As Employee = TryCast(o, Employee)
If e Is Nothing Then
Throw New ArgumentException("o is not an Employee object.")
End If
Return Name.CompareTo(e.Name)
End Function
End Class
Public Class EmployeeSearch
Dim _s As String
Public Sub New(s As String)
_s = s
End Sub
Public Function StartsWith(e As Employee) As Boolean
Return e.Name.StartsWith(_s, StringComparison.InvariantCultureIgnoreCase)
End Function
End Class
Module Example
Public Sub Main()
Dim employees As New List(Of Employee)()
employees.AddRange( { New Employee() With { .Name = "Frank", .Id = 2 },
New Employee() With { .Name = "Jill", .Id = 3 },
New Employee() With { .Name = "Dave", .Id = 5 },
New Employee() With { .Name = "Jack", .Id = 8 },
New Employee() With { .Name = "Judith", .Id = 12 },
New Employee() With { .Name = "Robert", .Id = 14 },
New Employee() With { .Name = "Adam", .Id = 1 } } )
employees.Sort()
Dim es As New EmployeeSearch("J")
Console.WriteLine("'J' starts at index {0}",
employees.FindIndex(0, employees.Count - 1,
AddressOf es.StartsWith))
es = New EmployeeSearch("Ju")
Console.WriteLine("'Ju' starts at index {0}",
employees.FindIndex(0, employees.Count - 1,
AddressOf es.StartsWith))
End Sub
End Module
' The example displays the following output:
' 'J' starts at index 3
' 'Ju' starts at index 5
Комментарии
Выполняется List<T> поиск вперед, начиная startIndex с и заканчивая startIndex плюс count минус 1, если count больше 0.
Это делегат метода, который возвращаетPredicate<T>, true если объект, переданный в него, соответствует условиям, определенным в делегате. Элементы текущего элемента List<T> передаются делегату по отдельности Predicate<T> . Делегат имеет подпись:
public bool methodName(T obj)
Public Function methodName(obj As T) As Boolean
Этот метод выполняет линейный поиск; Таким образом, этот метод является операцией O(n), где n — count.
См. также раздел
- Exists(Predicate<T>)
- Find(Predicate<T>)
- FindLast(Predicate<T>)
- FindAll(Predicate<T>)
- FindLastIndex
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
Применяется к
FindIndex(Predicate<T>)
- Исходный код:
- List.cs
- Исходный код:
- List.cs
- Исходный код:
- List.cs
- Исходный код:
- List.cs
- Исходный код:
- List.cs
Выполняет поиск элемента, соответствующего условиям, определенным указанным предикатом, и возвращает отсчитываемый от нуля индекс первого вхождения в целом List<T>.
public:
int FindIndex(Predicate<T> ^ match);
public int FindIndex(Predicate<T> match);
member this.FindIndex : Predicate<'T> -> int
Public Function FindIndex (match As Predicate(Of T)) As Integer
Параметры
- match
- Predicate<T>
Делегат Predicate<T> , определяющий условия элемента для поиска.
Возвращаемое значение
Отсчитываемый от нуля индекс первого вхождения элемента, соответствующего условиям, определенным matchв случае обнаружения; в противном случае — значение -1.
Исключения
match равно null.
Примеры
В следующем примере определяется Employee класс с двумя полями Name и Id. Он также определяет EmployeeSearch класс с одним методом, StartsWithкоторый указывает, начинается ли Employee.Name поле с указанной подстроки, предоставленной конструктору EmployeeSearch класса. Обратите внимание на сигнатуру этого метода
public bool StartsWith(Employee e)
Public Function StartsWith(e As Employee) As Boolean
соответствует сигнатуре делегата, который можно передать методу FindIndex . В примере создается экземпляр List<Employee> объекта, добавляется к нему несколько Employee объектов, а затем вызывается FindIndex(Int32, Int32, Predicate<T>) метод дважды для поиска всей коллекции, первый раз для первого объекта, поле которого Employee начинается с "J", и второй раз для первого NameEmployee объекта, поле которого 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(es.StartsWith));
es = new EmployeeSearch("Ju");
Console.WriteLine("'Ju' starts at index {0}",
employees.FindIndex(es.StartsWith));
}
}
// The example displays the following output:
// 'J' starts at index 3
// 'Ju' starts at index 5
Imports System.Collections.Generic
Public Class Employee : Implements IComparable
Public Property Name As String
Public Property Id As Integer
Public Function CompareTo(o As Object) As Integer _
Implements IComparable.CompareTo
Dim e As Employee = TryCast(o, Employee)
If e Is Nothing Then
Throw New ArgumentException("o is not an Employee object.")
End If
Return Name.CompareTo(e.Name)
End Function
End Class
Public Class EmployeeSearch
Dim _s As String
Public Sub New(s As String)
_s = s
End Sub
Public Function StartsWith(e As Employee) As Boolean
Return e.Name.StartsWith(_s, StringComparison.InvariantCultureIgnoreCase)
End Function
End Class
Module Example
Public Sub Main()
Dim employees As New List(Of Employee)()
employees.AddRange( { New Employee() With { .Name = "Frank", .Id = 2 },
New Employee() With { .Name = "Jill", .Id = 3 },
New Employee() With { .Name = "Dave", .Id = 5 },
New Employee() With { .Name = "Jack", .Id = 8 },
New Employee() With { .Name = "Judith", .Id = 12 },
New Employee() With { .Name = "Robert", .Id = 14 },
New Employee() With { .Name = "Adam", .Id = 1 } } )
employees.Sort()
Dim es As New EmployeeSearch("J")
Console.WriteLine("'J' starts at index {0}",
employees.FindIndex(AddressOf es.StartsWith))
es = New EmployeeSearch("Ju")
Console.WriteLine("'Ju' starts at index {0}",
employees.FindIndex(AddressOf es.StartsWith))
End Sub
End Module
' The example displays the following output:
' 'J' starts at index 3
' 'Ju' starts at index 5
Комментарии
Выполняется List<T> поиск вперед, начиная с первого элемента и заканчивая последним элементом.
Это делегат метода, который возвращаетPredicate<T>, true если объект, переданный в него, соответствует условиям, определенным в делегате. Элементы текущего элемента List<T> передаются делегату по отдельности Predicate<T> . Делегат имеет подпись:
public bool methodName(T obj)
Public Function methodName(obj As T) As Boolean
Этот метод выполняет линейный поиск; Таким образом, этот метод является операцией O(n), где n — Count.
См. также раздел
- Exists(Predicate<T>)
- Find(Predicate<T>)
- FindLast(Predicate<T>)
- FindAll(Predicate<T>)
- FindLastIndex
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
Применяется к
FindIndex(Int32, Predicate<T>)
- Исходный код:
- List.cs
- Исходный код:
- List.cs
- Исходный код:
- List.cs
- Исходный код:
- List.cs
- Исходный код:
- List.cs
Выполняет поиск элемента, соответствующего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов в диапазоне элементов, List<T> который расширяется от указанного индекса до последнего элемента.
public:
int FindIndex(int startIndex, Predicate<T> ^ match);
public int FindIndex(int startIndex, Predicate<T> match);
member this.FindIndex : int * Predicate<'T> -> int
Public Function FindIndex (startIndex As Integer, match As Predicate(Of T)) As Integer
Параметры
- startIndex
- Int32
Отсчитываемый от нуля начальный индекс поиска.
- match
- Predicate<T>
Делегат Predicate<T> , определяющий условия элемента для поиска.
Возвращаемое значение
Отсчитываемый от нуля индекс первого вхождения элемента, соответствующего условиям, определенным matchв случае обнаружения; в противном случае — значение -1.
Исключения
match равно null.
startIndexнаходится за пределами диапазона допустимых индексов для .List<T>
Примеры
В следующем примере определяется Employee класс с двумя полями Name и Id. Он также определяет EmployeeSearch класс с одним методом, StartsWithкоторый указывает, начинается ли Employee.Name поле с указанной подстроки, предоставленной конструктору EmployeeSearch класса. Обратите внимание на сигнатуру этого метода
public bool StartsWith(Employee e)
Public Function StartsWith(e As Employee) As Boolean
соответствует сигнатуре делегата, который можно передать методу FindIndex . В примере создается экземпляр List<Employee> объекта, добавляется в него несколько объектов, а затем вызывается Employee метод дважды для поиска коллекции, начиная с пятого FindIndex(Int32, Int32, Predicate<T>) члена (то есть члена в индексе 4). При первом поиске первого объекта, поле которого Employee начинается с "J"; во второй раз он ищет первый NameEmployee объект, поле которого 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");
int index = employees.FindIndex(4, es.StartsWith);
Console.WriteLine("Starting index of'J': {0}",
index >= 0 ? index.ToString() : "Not found");
es = new EmployeeSearch("Ju");
index = employees.FindIndex(4, es.StartsWith);
Console.WriteLine("Starting index of 'Ju': {0}",
index >= 0 ? index.ToString() : "Not found");
}
}
// The example displays the following output:
// 'J' starts at index 4
// 'Ju' starts at index 5
Imports System.Collections.Generic
Public Class Employee : Implements IComparable
Public Property Name As String
Public Property Id As Integer
Public Function CompareTo(o As Object) As Integer _
Implements IComparable.CompareTo
Dim e As Employee = TryCast(o, Employee)
If e Is Nothing Then
Throw New ArgumentException("o is not an Employee object.")
End If
Return Name.CompareTo(e.Name)
End Function
End Class
Public Class EmployeeSearch
Dim _s As String
Public Sub New(s As String)
_s = s
End Sub
Public Function StartsWith(e As Employee) As Boolean
Return e.Name.StartsWith(_s, StringComparison.InvariantCultureIgnoreCase)
End Function
End Class
Module Example
Public Sub Main()
Dim employees As New List(Of Employee)()
employees.AddRange( { New Employee() With { .Name = "Frank", .Id = 2 },
New Employee() With { .Name = "Jill", .Id = 3 },
New Employee() With { .Name = "Dave", .Id = 5 },
New Employee() With { .Name = "Jack", .Id = 8 },
New Employee() With { .Name = "Judith", .Id = 12 },
New Employee() With { .Name = "Robert", .Id = 14 },
New Employee() With { .Name = "Adam", .Id = 1 } } )
employees.Sort()
Dim es As New EmployeeSearch("J")
Dim index As Integer = employees.FindIndex(4, AddressOf es.StartsWith)
Console.WriteLine("Starting index of'J': {0}",
If(index >= 0, index.ToString(), "Not found"))
es = New EmployeeSearch("Ju")
index = employees.FindIndex(4, AddressOf es.StartsWith)
Console.WriteLine("Starting index of'Ju': {0}",
If(index >= 0, index.ToString(), "Not found"))
End Sub
End Module
' The example displays the following output:
' 'J' starts at index 4
' 'Ju' starts at index 5
Комментарии
Выполняется List<T> поиск вперед, начиная startIndex с и заканчивая последним элементом.
Это делегат метода, который возвращаетPredicate<T>, true если объект, переданный в него, соответствует условиям, определенным в делегате. Элементы текущего элемента List<T> передаются делегату по отдельности Predicate<T> . Делегат имеет подпись:
public bool methodName(T obj)
Public Function methodName(obj As T) As Boolean
Этот метод выполняет линейный поиск; Таким образом, этот метод является операцией O(n), где n — это число элементов от startIndex конца List<T>.
См. также раздел
- Exists(Predicate<T>)
- Find(Predicate<T>)
- FindLast(Predicate<T>)
- FindAll(Predicate<T>)
- FindLastIndex
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>