List<T>.FindIndex Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wyszukuje element pasujący do warunków zdefiniowanych przez określony predykat i zwraca zerowy indeks pierwszego wystąpienia w części List<T> lub. Ta metoda zwraca wartość -1, jeśli element zgodny z warunkami nie zostanie znaleziony.
Przeciążenia
FindIndex(Int32, Int32, Predicate<T>) |
Wyszukuje element zgodny z warunkami zdefiniowanymi przez określony predykat i zwraca indeks pierwszego wystąpienia w zakresie elementów w List<T> zakresie elementów rozpoczynających się od określonego indeksu i zawiera określoną liczbę elementów. |
FindIndex(Predicate<T>) |
Wyszukuje element zgodny z warunkami zdefiniowanymi przez określony predykat i zwraca indeks oparty na zera pierwszego wystąpienia w całym List<T>obiekcie . |
FindIndex(Int32, Predicate<T>) |
Wyszukuje element zgodny z warunkami zdefiniowanymi przez określony predykat i zwraca indeks pierwszego wystąpienia w zakresie elementów w List<T> zakresie elementów, które rozciągają się od określonego indeksu do ostatniego elementu. |
FindIndex(Int32, Int32, Predicate<T>)
- Źródło:
- List.cs
- Źródło:
- List.cs
- Źródło:
- List.cs
Wyszukuje element zgodny z warunkami zdefiniowanymi przez określony predykat i zwraca indeks pierwszego wystąpienia w zakresie elementów w List<T> zakresie elementów rozpoczynających się od określonego indeksu i zawiera określoną liczbę elementów.
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
Parametry
- startIndex
- Int32
Wartość początkowa indeksu zaczynającego się od zera dla wyszukiwania.
- count
- Int32
Liczba elementów w sekcji do wyszukania.
- match
- Predicate<T>
Predicate<T> Delegat, który definiuje warunki elementu do wyszukania.
Zwraca
Indeks oparty na zerach pierwszego wystąpienia elementu zgodnego z warunkami zdefiniowanymi przez match
metodę , jeśli zostanie znaleziony; w przeciwnym razie -1.
Wyjątki
match
to null
.
startIndex
znajduje się poza zakresem prawidłowych indeksów dla elementu List<T>.
-lub-
count
wartość jest mniejsza niż 0.
-lub-
startIndex
i count
nie określają prawidłowej sekcji w pliku List<T>.
Przykłady
W poniższym przykładzie zdefiniowano klasę z dwoma Employee
polami Name
i Id
. Definiuje również klasę EmployeeSearch
z pojedynczą metodą , StartsWith
która wskazuje, czy Employee.Name
pole rozpoczyna się od określonego podciągu dostarczonego do konstruktora EmployeeSearch
klasy. Zanotuj podpis tej metody
public bool StartsWith(Employee e)
Public Function StartsWith(e As Employee) As Boolean
odpowiada podpisowi delegata, który można przekazać do FindIndex metody. Przykład tworzy wystąpienie List<Employee>
obiektu, dodaje do niego wiele Employee
obiektów, a następnie wywołuje FindIndex(Int32, Int32, Predicate<T>) metodę dwukrotnie, aby przeszukać całą kolekcję (czyli składowych z indeksu 0 do indeksu Count — 1). Po raz pierwszy wyszukuje pierwszy Employee
obiekt, którego Name
pole zaczyna się od "J", po raz drugi wyszukuje pierwszy Employee
obiekt, którego Name
pole zaczyna się od "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
Uwagi
Element List<T> jest wyszukiwany do przodu rozpoczynający się od i kończący startIndex
się na startIndex
plus count
minus 1, jeśli count
jest większy niż 0.
Jest Predicate<T> delegatem do metody, która zwraca true
, jeśli obiekt przekazany do niego jest zgodny z warunkami zdefiniowanymi w delegatu. Elementy bieżące List<T> są indywidualnie przekazywane do delegata Predicate<T> . Pełnomocnik ma podpis:
public bool methodName(T obj)
Public Function methodName(obj As T) As Boolean
Ta metoda wykonuje wyszukiwanie liniowe; dlatego ta metoda jest operacją O(n), gdzie n to count
.
Zobacz też
- Exists(Predicate<T>)
- Find(Predicate<T>)
- FindLast(Predicate<T>)
- FindAll(Predicate<T>)
- FindLastIndex
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
Dotyczy
FindIndex(Predicate<T>)
- Źródło:
- List.cs
- Źródło:
- List.cs
- Źródło:
- List.cs
Wyszukuje element zgodny z warunkami zdefiniowanymi przez określony predykat i zwraca indeks oparty na zera pierwszego wystąpienia w całym List<T>obiekcie .
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
Parametry
- match
- Predicate<T>
Predicate<T> Delegat, który definiuje warunki elementu do wyszukania.
Zwraca
Indeks oparty na zerach pierwszego wystąpienia elementu zgodnego z warunkami zdefiniowanymi przez match
metodę , jeśli zostanie znaleziony; w przeciwnym razie -1.
Wyjątki
match
to null
.
Przykłady
W poniższym przykładzie zdefiniowano klasę z dwoma Employee
polami Name
i Id
. Definiuje również klasę EmployeeSearch
z pojedynczą metodą , StartsWith
która wskazuje, czy Employee.Name
pole rozpoczyna się od określonego podciągu dostarczonego do konstruktora EmployeeSearch
klasy. Zanotuj podpis tej metody
public bool StartsWith(Employee e)
Public Function StartsWith(e As Employee) As Boolean
odpowiada podpisowi delegata, który można przekazać do FindIndex metody. Przykład tworzy wystąpienie List<Employee>
obiektu, dodaje do niego wiele Employee
obiektów, a następnie wywołuje FindIndex(Int32, Int32, Predicate<T>) metodę dwukrotnie, aby przeszukać całą kolekcję, po raz pierwszy dla pierwszego obiektu, którego Name
pole zaczyna się od "J", a drugi raz dla pierwszego Employee
Employee
obiektu, którego Name
pole zaczyna się od "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
Uwagi
Element List<T> jest wyszukiwany do przodu, zaczynając od pierwszego elementu i kończąc na ostatnim elemecie.
Jest Predicate<T> delegatem do metody, która zwraca true
, jeśli obiekt przekazany do niego jest zgodny z warunkami zdefiniowanymi w delegatu. Elementy bieżące List<T> są indywidualnie przekazywane do delegata Predicate<T> . Pełnomocnik ma podpis:
public bool methodName(T obj)
Public Function methodName(obj As T) As Boolean
Ta metoda wykonuje wyszukiwanie liniowe; dlatego ta metoda jest operacją O(n), gdzie n to Count.
Zobacz też
- Exists(Predicate<T>)
- Find(Predicate<T>)
- FindLast(Predicate<T>)
- FindAll(Predicate<T>)
- FindLastIndex
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
Dotyczy
FindIndex(Int32, Predicate<T>)
- Źródło:
- List.cs
- Źródło:
- List.cs
- Źródło:
- List.cs
Wyszukuje element zgodny z warunkami zdefiniowanymi przez określony predykat i zwraca indeks pierwszego wystąpienia w zakresie elementów w List<T> zakresie elementów, które rozciągają się od określonego indeksu do ostatniego elementu.
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
Parametry
- startIndex
- Int32
Wartość początkowa indeksu zaczynającego się od zera dla wyszukiwania.
- match
- Predicate<T>
Predicate<T> Delegat, który definiuje warunki elementu do wyszukania.
Zwraca
Indeks oparty na zerach pierwszego wystąpienia elementu zgodnego z warunkami zdefiniowanymi przez match
metodę , jeśli zostanie znaleziony; w przeciwnym razie -1.
Wyjątki
match
to null
.
startIndex
znajduje się poza zakresem prawidłowych indeksów dla elementu List<T>.
Przykłady
W poniższym przykładzie zdefiniowano klasę z dwoma Employee
polami Name
i Id
. Definiuje również klasę EmployeeSearch
z pojedynczą metodą , StartsWith
która wskazuje, czy Employee.Name
pole rozpoczyna się od określonego podciągu dostarczonego do konstruktora EmployeeSearch
klasy. Zanotuj podpis tej metody
public bool StartsWith(Employee e)
Public Function StartsWith(e As Employee) As Boolean
odpowiada podpisowi delegata, który można przekazać do FindIndex metody. Przykład tworzy wystąpienie List<Employee>
obiektu, dodaje do niego wiele Employee
obiektów, a następnie wywołuje FindIndex(Int32, Int32, Predicate<T>) metodę dwukrotnie, aby wyszukać kolekcję, zaczynając od piątego elementu członkowskiego (czyli elementu członkowskiego w indeksie 4). Po raz pierwszy wyszukuje pierwszy Employee
obiekt, którego Name
pole zaczyna się od "J", po raz drugi wyszukuje pierwszy Employee
obiekt, którego Name
pole zaczyna się od "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
Uwagi
Element List<T> jest przeszukiwany dalej rozpoczynający się od startIndex
i kończący się na ostatnim elemecie.
Jest Predicate<T> delegatem do metody, która zwraca true
, jeśli obiekt przekazany do niego jest zgodny z warunkami zdefiniowanymi w delegatu. Elementy bieżące List<T> są indywidualnie przekazywane do delegata Predicate<T> . Pełnomocnik ma podpis:
public bool methodName(T obj)
Public Function methodName(obj As T) As Boolean
Ta metoda wykonuje wyszukiwanie liniowe; w związku z tym ta metoda jest operacją O(n), gdzie n jest liczbą elementów od startIndex
do końca List<T>elementu .
Zobacz też
- Exists(Predicate<T>)
- Find(Predicate<T>)
- FindLast(Predicate<T>)
- FindAll(Predicate<T>)
- FindLastIndex
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>