Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

List<T>.FindIndex méthode (Int32, Predicate<T>)

 

Date de publication : novembre 2016

Recherche un élément qui correspond aux conditions définies par le prédicat spécifié et retourne l'index de base zéro de la première occurrence trouvée dans la plage d'éléments de List<T> qui s'étend de l'index spécifié au dernier élément.

Espace de noms:   System.Collections.Generic
Assembly:  mscorlib (dans mscorlib.dll)

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

Paramètres

startIndex
Type: System.Int32

Index de début de base zéro de la recherche.

match
Type: System.Predicate<T>

Délégué Predicate<T> qui définit les conditions de l'élément à rechercher.

Valeur de retour

Type: System.Int32

Index de base zéro de la première occurrence d'un élément qui répond aux conditions définies par match, si cette occurrence est trouvée ; sinon, -1.

Exception Condition
ArgumentNullException

match a la valeur null.

ArgumentOutOfRangeException

startIndex est en dehors de la plage d’index valides pour List<T>.

Le List<T> recherche est effectuée vers l’avant startIndex et jusqu’au dernier élément.

Le Predicate<T> est un délégué à une méthode qui retourne true Si l’objet passé à elle correspond aux conditions définies dans ce délégué. Les éléments de l’utilisateur actuel List<T> sont passés individuellement à le Predicate<T> déléguer. Le délégué a la signature :

public bool methodName(T obj)

Cette méthode effectue une recherche linéaire ; Par conséquent, cette méthode est un O (n) opération, où n est le nombre d’éléments à partir de startIndex à la fin de la List<T>.

L’exemple suivant définit un Employee classe contenant deux champs, Name et Id. Il définit également un EmployeeSearch classe avec une méthode unique, StartsWith, qui indique si le Employee.Name champ commence par une sous-chaîne spécifiée qui est fournie à la EmployeeSearch constructeur de classe. Notez la signature de cette méthode.

public bool StartsWith(Employee e)

correspond à la signature du délégué qui peut être passé à la FindIndex (méthode). L’exemple instancie un List<Employee> d’objet, ajoute un nombre de Employee objets à elle, puis appelle la FindIndex(Int32, Int32, Predicate<T>) méthode deux fois à rechercher dans la collection commençant par son membre cinquième (autrement dit, le membre à l’index 4). La première fois, il recherche le premier Employee dont Name champ commence par « J » ; la deuxième fois, il recherche le premier Employee dont Name champ commence par « 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

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 2.0
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight pour Windows Phone
Disponible depuis 8.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: