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.FindLastIndex<T>-Methode: (T[], Int32, Int32, Predicate<T>)

 

Veröffentlicht: Oktober 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 die angegebene Anzahl von Elementen umfasst und am angegebenen Index endet.

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

public static int FindLastIndex<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 Rückwärtssuche.

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 letzten Vorkommnisses eines Elements, das mit den durch match definierten Bedingungen übereinstimmt, 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 wird rückwärts durchsucht, wobei die Suche am startIndex bis startIndex minus count plus 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 FindLastIndex 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 FindLastIndex<T>(T[], Predicate<T>) Überladung durchläuft das Array, die Abwärtskompatibilität von Ende, übergibt die einzelnen Elemente an die EndsWithSaurus Methode. Die Suche wird angehalten, sobald die EndsWithSaurus -Methode gibt true für das Element an Position 5.

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 FindLastIndex<T>(T[], Int32, Predicate<T>) Überladung wird verwendet, um das Array an Position 4 und zurück an den Anfang des Arrays zu suchen. Sie findet das Element an Position 1. Abschließend die FindLastIndex<T>(T[], Int32, Int32, Predicate<T>) Überladung wird verwendet, um den Bereich der drei Elemente beginnend an Position 4 und rückwärts (d. h. die Elemente 4, 3 und 2) zu suchen. 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.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
 */

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: