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

Array.FindLastIndex<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 letzten Vorkommens innerhalb des Bereichs von Elementen im Array zurück, der vom ersten Element bis zum angegeben Index reicht.

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

public static int FindLastIndex<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 Rückwärtssuche.
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 letzten Vorkommnisses eines Elements, das mit den durch match definierten Bedingungen übereinstimmt, sofern gefunden, andernfalls –1.

AusnahmeBedingung
ArgumentNullException

array hat den Wert null.

– oder –

match hat den Wert null.

ArgumentOutOfRangeException

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

Das Array wird in Rückwärtsrichtung von startIndex bis zum ersten Element durchsucht.

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 Anfang von array bis startIndex ist.

Im folgenden Codebeispiel werden alle drei Überladungen der generischen FindLastIndex-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 FindLastIndex<T>(T[], Predicate<T>)-Methodenüberladung durchläuft das Array ausgehend vom Ende rückwärts und übergibt die einzelnen Elemente an die EndsWithSaurus-Methode. Die Suche wird angehalten, sobald die EndsWithSaurus-Methode für das Element an Position 5 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 FindLastIndex<T>(T[], Int32, Predicate<T>)-Methodenüberladung wird das Array ab Position 4 rückwärts bis zum Anfang des Arrays durchsucht. Das Element wird an Position 1 gefunden. Schließlich wird mithilfe der FindLastIndex<T>(T[], Int32, Int32, Predicate<T>)-Methodenüberladung der Bereich mit drei Elementen ab Position 4 rückwärts durchsucht (d. h. die Elemente 4, 3 und 2). 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.FindLastIndex(dinosaurs, EndsWithSaurus): {0}", 
            Array.FindLastIndex(dinosaurs, EndsWithSaurus));

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

        Console.WriteLine(
            "\nArray.FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus): {0}",
            Array.FindLastIndex(dinosaurs, 4, 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.FindLastIndex(dinosaurs, EndsWithSaurus): 5

Array.FindLastIndex(dinosaurs, 4, EndsWithSaurus): 1

Array.FindLastIndex(dinosaurs, 4, 3, EndsWithSaurus): -1
 */


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.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