List<T>.FindIndex Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen koşul tarafından tanımlanan koşullarla eşleşen bir öğeyi arar ve veya bir bölümü içinde List<T> ilk oluşumun sıfır tabanlı dizinini döndürür. Koşullarla eşleşen bir öğe bulunamazsa bu yöntem -1 döndürür.
Aşırı Yüklemeler
FindIndex(Int32, Int32, Predicate<T>) |
Belirtilen koşul tarafından tanımlanan koşullarla eşleşen bir öğeyi arar ve belirtilen dizinde başlayan ve belirtilen sayıda öğeyi içeren öğe List<T> aralığındaki ilk oluşumun sıfır tabanlı dizinini döndürür. |
FindIndex(Predicate<T>) |
Belirtilen koşul tarafından tanımlanan koşullarla eşleşen bir öğeyi arar ve içindeki List<T>ilk oluşumun sıfır tabanlı dizinini döndürür. |
FindIndex(Int32, Predicate<T>) |
Belirtilen koşul tarafından tanımlanan koşullarla eşleşen bir öğeyi arar ve belirtilen dizinden son öğeye genişleten öğe aralığındaki List<T> ilk oluşumun sıfır tabanlı dizinini döndürür. |
FindIndex(Int32, Int32, Predicate<T>)
- Kaynak:
- List.cs
- Kaynak:
- List.cs
- Kaynak:
- List.cs
Belirtilen koşul tarafından tanımlanan koşullarla eşleşen bir öğeyi arar ve belirtilen dizinde başlayan ve belirtilen sayıda öğeyi içeren öğe List<T> aralığındaki ilk oluşumun sıfır tabanlı dizinini döndürür.
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
Parametreler
- startIndex
- Int32
Arama işleminin sıfır tabanlı başlangıç dizini.
- count
- Int32
Sıralanacak bölümdeki öğelerin sayısı.
- match
- Predicate<T>
Aranacak Predicate<T> öğenin koşullarını tanımlayan temsilci.
Döndürülenler
Bir öğenin, tarafından tanımlanan koşullarla match
eşleşen ilk oluşumunun sıfır tabanlı dizini; bulunursa, aksi takdirde -1.
Özel durumlar
match
, null
değeridir.
startIndex
, için geçerli dizin aralığının dışındadır List<T>.
-veya-
count
0'dan küçüktür.
-veya-
startIndex
ve count
içinde List<T>geçerli bir bölüm belirtmeyin.
Örnekler
Aşağıdaki örnek, Name
ve Id
iki alanı olan bir Employee
sınıfı tanımlar. Ayrıca, StartsWith
alanın sınıf oluşturucusunun Employee.Name
sağladığı EmployeeSearch
belirtilen bir alt dizeyle başlayıp başlamadığını gösteren tek bir yöntemi olan bir sınıf tanımlarEmployeeSearch
. Bu yöntemin imzasını not edin
public bool StartsWith(Employee e)
Public Function StartsWith(e As Employee) As Boolean
, yönteme geçirilebilen temsilcinin imzasına FindIndex karşılık gelir. Örnek bir List<Employee>
nesnenin örneğini oluşturur, nesneye bir dizi Employee
nesne ekler ve ardından koleksiyonun FindIndex(Int32, Int32, Predicate<T>) tamamında arama yapmak için yöntemini iki kez çağırır (diğer bir ifadeyle, dizin 0'dan dizine Count - 1'e üyeler). İlk kez, alanı "J" ile başlayan ilk Employee
nesneyi Name
arar; ikinci kez, alanı "Ju" ile başlayan ilk Employee
nesneyi Name
arar.
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
Açıklamalar
List<T>, 0'dan startIndex
büyükse count
artı eksi 1'den count
startIndex
başlayıp 1 ile biten ileriye doğru aranılır.
Predicate<T>, nesnesine geçirilen nesnenin temsilcide tanımlanan koşullarla eşleşip eşleşmediğini döndüren true
bir yöntemin temsilcisidir. Geçerli List<T> öğe öğeleri tek tek temsilciye Predicate<T> geçirilir. Temsilcinin imzası vardır:
public bool methodName(T obj)
Public Function methodName(obj As T) As Boolean
Bu yöntem doğrusal bir arama gerçekleştirir; bu nedenle, bu yöntem bir O(n) işlemidir; burada n olur count
.
Ayrıca bkz.
- Exists(Predicate<T>)
- Find(Predicate<T>)
- FindLast(Predicate<T>)
- FindAll(Predicate<T>)
- FindLastIndex
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
Şunlara uygulanır
FindIndex(Predicate<T>)
- Kaynak:
- List.cs
- Kaynak:
- List.cs
- Kaynak:
- List.cs
Belirtilen koşul tarafından tanımlanan koşullarla eşleşen bir öğeyi arar ve içindeki List<T>ilk oluşumun sıfır tabanlı dizinini döndürür.
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
Parametreler
- match
- Predicate<T>
Aranacak Predicate<T> öğenin koşullarını tanımlayan temsilci.
Döndürülenler
Bir öğenin, tarafından tanımlanan koşullarla match
eşleşen ilk oluşumunun sıfır tabanlı dizini; bulunursa, aksi takdirde -1.
Özel durumlar
match
, null
değeridir.
Örnekler
Aşağıdaki örnek, Name
ve Id
iki alanı olan bir Employee
sınıfı tanımlar. Ayrıca, StartsWith
alanın sınıf oluşturucusunun Employee.Name
sağladığı EmployeeSearch
belirtilen bir alt dizeyle başlayıp başlamadığını gösteren tek bir yöntemi olan bir sınıf tanımlarEmployeeSearch
. Bu yöntemin imzasını not edin
public bool StartsWith(Employee e)
Public Function StartsWith(e As Employee) As Boolean
, yönteme geçirilebilen temsilcinin imzasına FindIndex karşılık gelir. Örnek bir List<Employee>
nesnenin örneğini oluşturur, ona bir dizi Employee
nesne ekler ve ardından yöntemini iki kez çağırarak koleksiyonun tamamında arama yaparken, ilk kez alanı "J" ile başlayan ilk Employee
nesne Name
ve ikinci kez de alanı "Ju" ile başlayan ilk Employee
nesne Name
için çağrırFindIndex(Int32, Int32, Predicate<T>).
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
Açıklamalar
List<T>, ilk öğeden başlayıp son öğeyle biten ileriye doğru arandı.
Predicate<T>, nesnesine geçirilen nesnenin temsilcide tanımlanan koşullarla eşleşip eşleşmediğini döndüren true
bir yöntemin temsilcisidir. Geçerli List<T> öğe öğeleri tek tek temsilciye Predicate<T> geçirilir. Temsilcinin imzası vardır:
public bool methodName(T obj)
Public Function methodName(obj As T) As Boolean
Bu yöntem doğrusal bir arama gerçekleştirir; bu nedenle, bu yöntem bir O(n) işlemidir; burada n olur Count.
Ayrıca bkz.
- Exists(Predicate<T>)
- Find(Predicate<T>)
- FindLast(Predicate<T>)
- FindAll(Predicate<T>)
- FindLastIndex
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
Şunlara uygulanır
FindIndex(Int32, Predicate<T>)
- Kaynak:
- List.cs
- Kaynak:
- List.cs
- Kaynak:
- List.cs
Belirtilen koşul tarafından tanımlanan koşullarla eşleşen bir öğeyi arar ve belirtilen dizinden son öğeye genişleten öğe aralığındaki List<T> ilk oluşumun sıfır tabanlı dizinini döndürür.
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
Parametreler
- startIndex
- Int32
Arama işleminin sıfır tabanlı başlangıç dizini.
- match
- Predicate<T>
Aranacak Predicate<T> öğenin koşullarını tanımlayan temsilci.
Döndürülenler
Bir öğenin, tarafından tanımlanan koşullarla match
eşleşen ilk oluşumunun sıfır tabanlı dizini; bulunursa, aksi takdirde -1.
Özel durumlar
match
, null
değeridir.
startIndex
, için geçerli dizin aralığının dışındadır List<T>.
Örnekler
Aşağıdaki örnek, Name
ve Id
iki alanı olan bir Employee
sınıfı tanımlar. Ayrıca, StartsWith
alanın sınıf oluşturucusunun Employee.Name
sağladığı EmployeeSearch
belirtilen bir alt dizeyle başlayıp başlamadığını gösteren tek bir yöntemi olan bir sınıf tanımlarEmployeeSearch
. Bu yöntemin imzasını not edin
public bool StartsWith(Employee e)
Public Function StartsWith(e As Employee) As Boolean
, yönteme geçirilebilen temsilcinin imzasına FindIndex karşılık gelir. Örnek bir List<Employee>
nesnenin örneğini oluşturur, nesneye bir dizi Employee
nesne ekler ve ardından beşinci üyesinden (dizin 4'teki üye) başlayarak koleksiyonda arama yapmak için yöntemini iki kez çağırır FindIndex(Int32, Int32, Predicate<T>) . İlk kez, alanı "J" ile başlayan ilk Employee
nesneyi Name
arar; ikinci kez, alanı "Ju" ile başlayan ilk Employee
nesneyi Name
arar.
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
Açıklamalar
List<T>, en son öğeden startIndex
başlayıp sonlandığında ileriye doğru arandı.
Predicate<T>, nesnesine geçirilen nesnenin temsilcide tanımlanan koşullarla eşleşip eşleşmediğini döndüren true
bir yöntemin temsilcisidir. Geçerli List<T> öğe öğeleri tek tek temsilciye Predicate<T> geçirilir. Temsilcinin imzası vardır:
public bool methodName(T obj)
Public Function methodName(obj As T) As Boolean
Bu yöntem doğrusal bir arama gerçekleştirir; bu nedenle, bu yöntem bir O(n) işlemidir; burada n öğesinden startIndex
sonuna List<T>kadar olan öğelerin sayısıdır.
Ayrıca bkz.
- Exists(Predicate<T>)
- Find(Predicate<T>)
- FindLast(Predicate<T>)
- FindAll(Predicate<T>)
- FindLastIndex
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>