(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

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

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 vom angegebenen Index bis zum letzten Element reicht.

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

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

Typparameter

T

Der Typ der Elemente des Arrays.

Parameter

array
Typ: T[]
Das zu durchsuchende eindimensionale und nullbasierte Array.
startIndex
Typ: System.Int32
Der nullbasierte Startindex für die Suche.
match
Typ: System.Predicate<T>
Das Predicate<T>, das die Bedingungen für das Element definiert, nach dem gesucht werden soll.

Rückgabewert

Typ: System.Int32
Der nullbasierte Index des ersten Vorkommnisses eines Elements, das mit den durch match definierten Bedingungen übereinstimmt, sofern gefunden, andernfalls –1.

AusnahmeBedingung
ArgumentNullException

array ist null.

- oder -

match ist null.

ArgumentOutOfRangeException

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

Die Array wird vorwärts durchsucht, d. h. der Suchvorgang beginnt am startIndex und endet beim letzten Element.

Predicate<T> ist ein Delegat für eine Methode, die true zurückgibt, wenn das übergebene Objekt die im Delegaten definierten Bedingungen erfüllt. Die Elemente von array werden einzeln an Predicate<T> übergeben.

Diese Methode ist eine O(n)-Operation, wobei n die Anzahl der Elemente vom startIndex bis zum Ende von array ist.

Im folgenden Codebeispiel werden alle drei Überladungen der generischen FindIndex-Methode veranschaulicht. Es wird ein Array von Zeichenfolgen erstellt, das acht Dinosauriernamen enthält, von denen zwei (an Position 1 und 5) mit "saurus" enden. Im Codebeispiel wird außerdem die Suchprädikatmethode EndsWithSaurus definiert, die einen Zeichenfolgenparameter akzeptiert und einen booleschen Wert zurückgibt, mit dem angegeben wird, ob die Eingabezeichenfolge auf "saurus" endet.

Die FindIndex<T>(T[], Predicate<T>)-Methodenü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 für das Element an Position 1 true zurückgibt.

HinweisHinweis

In C# und Visual Basic muss der Predicate<string>-Delegat (Predicate(Of String) in Visual Basic) nicht explizit erstellt werden. Diese Sprachen leiten den richtigen Delegaten aus dem Kontext ab und erstellen ihn automatisch.

Mit der FindIndex<T>(T[], Int32, Predicate<T>)-Methodenüberladung wird das Array ab Position 2 bis zum Ende des Arrays durchsucht. Das Element wird an Position 5 gefunden. Schließlich wird mithilfe der FindIndex<T>(T[], Int32, Int32, Predicate<T>)-Methodenüberladung der Bereich mit drei Elementen ab Position 2 rückwärts durchsucht. Es wird -1 zurückgegeben, da in diesem Bereich keine Dinosauriernamen enthalten sind, die auf "saurus" enden.


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


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft