Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Array.FindIndex<T>-Methode: (T[], Int32, Int32, Predicate<T>)

 

Veröffentlicht: Juli 2016

Sucht nach einem Element, das die durch das angegebene Prädikat definierten Bedingungen erfüllt, und gibt den nullbasierten Index des ersten Vorkommens innerhalb des Bereichs von Elementen im Array zurück, der am angegebenen Index beginnt und die angegebene Anzahl von Elementen umfasst.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public static int FindIndex<T>(
	T[] array,
	int startIndex,
	int count,
	Predicate<T> match
)

Parameter

array
Type: T[]

Das zu durchsuchende eindimensionale und nullbasierte Array.

startIndex
Type: System.Int32

Der nullbasierte Startindex für die Suche.

count
Type: System.Int32

Die Anzahl der Elemente im zu durchsuchenden Abschnitt.

match
Type: System.Predicate<T>

Das Predicate<T>, das die Bedingungen für das Element definiert, nach dem gesucht werden soll.

Rückgabewert

Type: System.Int32

Der nullbasierte Index des ersten Vorkommens eines Elements, das die vom definierten Bedingungen entspricht match, sofern gefunden, andernfalls -1.

Typparameter

T

Der Typ der Elemente des Arrays.

Exception Condition
ArgumentNullException

array ist null.

- oder -

match ist null.

ArgumentOutOfRangeException

startIndex liegt außerhalb des Bereichs der gültigen Indizes für array.

- oder -

count ist kleiner als Null.

- oder -

startIndex und count geben keinen gültigen Abschnitt in array an.

Die Array beginnend vorwärts durchsucht startIndex bis startIndex plus count minus 1, wenn count größer als 0 ist.

Die Predicate<T> ist ein Delegat für eine Methode, die gibt true an das Objekt übergeben sie die Bedingungen der Delegat übereinstimmt. Die Elemente der array werden einzeln an übergeben der Predicate<T>.

Diese Methode ist eine O (n)-Operation, wobei n ist count.

Im folgenden Codebeispiel wird veranschaulicht, alle drei Überladungen, der die FindIndex generische Methode. Ein Array von Zeichenfolgen wird erstellt und mit 8 Godzilla-Namen, von denen zwei (an Position 1 und 5) mit "Saurus" enden. Das Codebeispiel definiert auch eine Prädikat Search-Methode mit dem Namen EndsWithSaurus, die einen Zeichenfolgenparameter akzeptiert und einen booleschen Wert zurückgibt, der angibt, ob die Eingabezeichenfolge auf "Saurus" endet.

Die FindIndex<T>(T[], Predicate<T>) Überladung durchläuft das Array von Anfang an und übergibt die einzelnen Elemente an die EndsWithSaurus Methode. Die Suche wird angehalten, sobald die EndsWithSaurus -Methode gibt true für das Element an Position 1.

System_CAPS_noteHinweis

In c# und Visual Basic ist es nicht notwendig, erstellen Sie die Predicate<string> Delegieren (Predicate(Of String) in Visual Basic) explizit. Diese Sprachen leiten den richtigen Delegaten aus Kontext und erstellen ihn automatisch.

Die FindIndex<T>(T[], Int32, Predicate<T>) Überladung wird verwendet, um das Array an Position 2 und bis zum Ende des Arrays zu suchen. Sie findet das Element an Position 5. Abschließend die FindIndex<T>(T[], Int32, Int32, Predicate<T>) Überladung wird verwendet, um den Bereich der drei Elemente ab Position 2 durchsucht. Es gibt-1 zurück, da keine Godzilla Namen in diesem Bereich, die mit "Saurus" enden vorhanden sind.

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
 */

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: