Array.FindIndex Metodo

Definizione

Cerca un elemento che soddisfi le condizioni definite in un predicato specificato e restituisce l'indice in base zero della prima occorrenza all'interno di un oggetto Array o in parte di esso.

Overload

FindIndex<T>(T[], Predicate<T>)

Cerca un elemento che corrisponda alle condizioni definite dal predicato specificato e restituisce l'indice in base zero della prima occorrenza all'interno di Array.

FindIndex<T>(T[], Int32, Predicate<T>)

Cerca un elemento che soddisfi le condizioni definite dal predicato specificato e restituisce l'indice in base zero della prima occorrenza all'interno dell'intervallo di elementi nell'oggetto Array compreso tra l'indice specificato e l'ultimo elemento.

FindIndex<T>(T[], Int32, Int32, Predicate<T>)

Cerca un elemento che soddisfi le condizioni definite dal predicato specificato e restituisce l'indice in base zero della prima occorrenza all'interno dell'intervallo di elementi nell'oggetto Array che inizia dall'indice specificato e contiene il numero indicato di elementi.

Esempio

Nell'esempio di codice seguente vengono illustrati tutti e tre gli overload del FindIndex metodo generico . Viene creata una matrice di stringhe contenente 8 nomi di dinosauro, due dei quali (nelle posizioni 1 e 5) terminano con "saurus". L'esempio di codice definisce anche un metodo di predicato di ricerca denominato , che accetta un parametro stringa e restituisce un valore booleano che indica se la stringa di input termina EndsWithSaurus con "saurus".

FindIndex<T>(T[], Predicate<T>)L'overload del metodo attraversa la matrice dall'inizio, passando ogni elemento a sua volta al metodo EndsWithSaurus . La ricerca si interrompe quando il EndsWithSaurus metodo restituisce true l'elemento nella posizione 1.

Nota

In C# e Visual Basic non è necessario creare il delegato Predicate<string> ( Predicate(Of String) in Visual Basic) in modo esplicito. Questi linguaggi deduceno il delegato corretto dal contesto e lo creano automaticamente.

L'overload del metodo viene usato per cercare la matrice a partire dalla posizione FindIndex<T>(T[], Int32, Predicate<T>) 2 e continuando fino alla fine della matrice. Trova l'elemento nella posizione 5. Infine, FindIndex<T>(T[], Int32, Int32, Predicate<T>) l'overload del metodo viene usato per cercare l'intervallo di tre elementi a partire dalla posizione 2. Restituisce -1 perché non sono presenti nomi di dinosauri nell'intervallo che terminano con "saurus".

using namespace System;

// Search predicate returns true if a string ends in "saurus".
bool EndsWithSaurus(String^ s)
{
    if ((s->Length > 5) && 
        (s->Substring(s->Length - 6)->ToLower() == "saurus"))
    {
        return true;
    }
    else
    {
        return false;
    }
};

void main()
{
    array<String^>^ dinosaurs = { "Compsognathus", 
        "Amargasaurus",   "Oviraptor",      "Velociraptor", 
        "Deinonychus",    "Dilophosaurus",  "Gallimimus", 
        "Triceratops" };

    Console::WriteLine();
    for each(String^ dinosaur in dinosaurs )
    {
        Console::WriteLine(dinosaur);
    }

    Console::WriteLine("\nArray::FindIndex(dinosaurs, EndsWithSaurus): {0}", 
        Array::FindIndex(dinosaurs, gcnew Predicate<String^>(EndsWithSaurus)));

    Console::WriteLine("\nArray::FindIndex(dinosaurs, 2, EndsWithSaurus): {0}",
        Array::FindIndex(dinosaurs, 2, gcnew Predicate<String^>(EndsWithSaurus)));

    Console::WriteLine("\nArray::FindIndex(dinosaurs, 2, 3, EndsWithSaurus): {0}",
        Array::FindIndex(dinosaurs, 2, 3, gcnew Predicate<String^>(EndsWithSaurus)));
}

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

Array::FindIndex(dinosaurs, EndsWithSaurus): 1

Array::FindIndex(dinosaurs, 2, EndsWithSaurus): 5

Array::FindIndex(dinosaurs, 2, 3, EndsWithSaurus): -1
 */
using System;

public class Example
{
    public static void Main()
    {
        string[] dinosaurs = { "Compsognathus",
            "Amargasaurus",   "Oviraptor",      "Velociraptor",
            "Deinonychus",    "Dilophosaurus",  "Gallimimus",
            "Triceratops" };

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine(
            "\nArray.FindIndex(dinosaurs, EndsWithSaurus): {0}",
            Array.FindIndex(dinosaurs, EndsWithSaurus));

        Console.WriteLine(
            "\nArray.FindIndex(dinosaurs, 2, EndsWithSaurus): {0}",
            Array.FindIndex(dinosaurs, 2, EndsWithSaurus));

        Console.WriteLine(
            "\nArray.FindIndex(dinosaurs, 2, 3, EndsWithSaurus): {0}",
            Array.FindIndex(dinosaurs, 2, 3, EndsWithSaurus));
    }

    // Search predicate returns true if a string ends in "saurus".
    private static bool EndsWithSaurus(String s)
    {
        if ((s.Length > 5) &&
            (s.Substring(s.Length - 6).ToLower() == "saurus"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

Array.FindIndex(dinosaurs, EndsWithSaurus): 1

Array.FindIndex(dinosaurs, 2, EndsWithSaurus): 5

Array.FindIndex(dinosaurs, 2, 3, EndsWithSaurus): -1
 */
Public Class Example

    Public Shared Sub Main()

        Dim dinosaurs() As String = { "Compsognathus", _
            "Amargasaurus",   "Oviraptor",      "Velociraptor", _
            "Deinonychus",    "Dilophosaurus",  "Gallimimus", _
            "Triceratops" }

        Console.WriteLine()
        For Each dinosaur As String In dinosaurs
            Console.WriteLine(dinosaur)
        Next

        Console.WriteLine(vbLf & _
            "Array.FindIndex(dinosaurs, AddressOf EndsWithSaurus): {0}", _
            Array.FindIndex(dinosaurs, AddressOf EndsWithSaurus))

        Console.WriteLine(vbLf & _
            "Array.FindIndex(dinosaurs, 2, AddressOf EndsWithSaurus): {0}", _
            Array.FindIndex(dinosaurs, 2, AddressOf EndsWithSaurus))

        Console.WriteLine(vbLf & _
            "Array.FindIndex(dinosaurs, 2, 3, AddressOf EndsWithSaurus): {0}", _
            Array.FindIndex(dinosaurs, 2, 3, AddressOf EndsWithSaurus))

    End Sub

    ' Search predicate returns true if a string ends in "saurus".
    Private Shared Function EndsWithSaurus(ByVal s As String) _
        As Boolean

        ' AndAlso prevents evaluation of the second Boolean
        ' expression if the string is so short that an error
        ' would occur.
        If (s.Length > 5) AndAlso _
            (s.Substring(s.Length - 6).ToLower() = "saurus") Then
            Return True
        Else
            Return False
        End If
    End Function
End Class

' This code example produces the following output:
'
'Compsognathus
'Amargasaurus
'Oviraptor
'Velociraptor
'Deinonychus
'Dilophosaurus
'Gallimimus
'Triceratops
'
'Array.FindIndex(dinosaurs, AddressOf EndsWithSaurus): 1
'
'Array.FindIndex(dinosaurs, 2, AddressOf EndsWithSaurus): 5
'
'Array.FindIndex(dinosaurs, 2, 3, AddressOf EndsWithSaurus): -1

FindIndex<T>(T[], Predicate<T>)

Cerca un elemento che corrisponda alle condizioni definite dal predicato specificato e restituisce l'indice in base zero della prima occorrenza all'interno di Array.

public:
generic <typename T>
 static int FindIndex(cli::array <T> ^ array, Predicate<T> ^ match);
public static int FindIndex<T> (T[] array, Predicate<T> match);
static member FindIndex : 'T[] * Predicate<'T> -> int
Public Shared Function FindIndex(Of T) (array As T(), match As Predicate(Of T)) As Integer

Parametri di tipo

T

Tipo degli elementi della matrice.

Parametri

array
T[]

Oggetto Array unidimensionale in base zero in cui eseguire la ricerca.

match
Predicate<T>

Oggetto Predicate<T> che definisce le condizioni dell'elemento da cercare.

Restituisce

Int32

Indice in base zero della prima occorrenza di un elemento che corrisponde alle condizioni definite da match, se presente; in caso contrario, -1.

Eccezioni

array è null.

-oppure-

match è null.

Commenti

Viene Array cercato in avanti a partire dal primo elemento e terminando in corrispondenza dell'ultimo elemento.

è Predicate<T> un delegato a un metodo che restituisce se true l'oggetto passato corrisponde alle condizioni definite nel delegato. Gli elementi di array vengono passati singolarmente a Predicate<T> .

Questo metodo è un'operazione O( n ), dove è di n Length array .

Vedi anche

Si applica a

FindIndex<T>(T[], Int32, Predicate<T>)

Cerca un elemento che soddisfi le condizioni definite dal predicato specificato e restituisce l'indice in base zero della prima occorrenza all'interno dell'intervallo di elementi nell'oggetto Array compreso tra l'indice specificato e l'ultimo elemento.

public:
generic <typename T>
 static int FindIndex(cli::array <T> ^ array, int startIndex, Predicate<T> ^ match);
public static int FindIndex<T> (T[] array, int startIndex, Predicate<T> match);
static member FindIndex : 'T[] * int * Predicate<'T> -> int
Public Shared Function FindIndex(Of T) (array As T(), startIndex As Integer, match As Predicate(Of T)) As Integer

Parametri di tipo

T

Tipo degli elementi della matrice.

Parametri

array
T[]

Oggetto Array unidimensionale in base zero in cui eseguire la ricerca.

startIndex
Int32

Indice iniziale in base zero della ricerca.

match
Predicate<T>

Oggetto Predicate<T> che definisce le condizioni dell'elemento da cercare.

Restituisce

Int32

Indice in base zero della prima occorrenza di un elemento che corrisponde alle condizioni definite da match, se presente; in caso contrario, -1.

Eccezioni

array costruito in modo predefinito è null.

-oppure-

match è null.

startIndex non è compreso nell'intervallo di indici validi per array.

Commenti

Viene Array cercato in avanti a partire da e startIndex terminando in corrispondenza dell'ultimo elemento.

è Predicate<T> un delegato a un metodo che restituisce se true l'oggetto passato corrisponde alle condizioni definite nel delegato. Gli elementi di array vengono passati singolarmente a Predicate<T> .

Questo metodo è un'operazione O( n ), dove è il numero di elementi da alla fine di n startIndex array .

Vedi anche

Si applica a

FindIndex<T>(T[], Int32, Int32, Predicate<T>)

Cerca un elemento che soddisfi le condizioni definite dal predicato specificato e restituisce l'indice in base zero della prima occorrenza all'interno dell'intervallo di elementi nell'oggetto Array che inizia dall'indice specificato e contiene il numero indicato di elementi.

public:
generic <typename T>
 static int FindIndex(cli::array <T> ^ array, int startIndex, int count, Predicate<T> ^ match);
public static int FindIndex<T> (T[] array, int startIndex, int count, Predicate<T> match);
static member FindIndex : 'T[] * int * int * Predicate<'T> -> int
Public Shared Function FindIndex(Of T) (array As T(), startIndex As Integer, count As Integer, match As Predicate(Of T)) As Integer

Parametri di tipo

T

Tipo degli elementi della matrice.

Parametri

array
T[]

Oggetto Array unidimensionale in base zero in cui eseguire la ricerca.

startIndex
Int32

Indice iniziale in base zero della ricerca.

count
Int32

Numero di elementi nella sezione in cui eseguire la ricerca.

match
Predicate<T>

Oggetto Predicate<T> che definisce le condizioni dell'elemento da cercare.

Restituisce

Int32

Indice in base zero della prima occorrenza di un elemento che corrisponde alle condizioni definite da match, se presente; in caso contrario, -1.

Eccezioni

array è null.

-oppure-

match è null.

startIndex non è compreso nell'intervallo di indici validi per array.

-oppure-

count è minore di zero.

-oppure-

startIndex e count non specificano una sezione valida in array.

Commenti

Viene Array cercato in avanti a partire da e startIndex terminando con più meno startIndex count 1, se count è maggiore di 0.

è Predicate<T> un delegato a un metodo che restituisce se true l'oggetto passato corrisponde alle condizioni definite nel delegato. Gli elementi di array vengono passati singolarmente a Predicate<T> .

Questo metodo è un'operazione O( n ), dove n è count .

Vedi anche

Si applica a