Array.FindIndex メソッド

定義

指定した述語で定義された条件に一致する要素を検索し、 Array またはその一部内で最初に見つかった位置の 0 から始まるインデックスを返します。

オーバーロード

名前 説明
FindIndex<T>(T[], Predicate<T>)

指定した述語で定義されている条件に一致する要素を検索し、 Array全体で最初に見つかった位置の 0 から始まるインデックスを返します。

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

指定した述語で定義された条件に一致する要素を検索し、指定したインデックスから最後の要素まで拡張される Array 内の要素の範囲内で最初に出現する 0 から始まるインデックスを返します。

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

指定した述語で定義された条件に一致する要素を検索し、指定したインデックスから始まり、指定した数の要素を含む Array 内の要素の範囲内で最初に出現する 0 から始まるインデックスを返します。

次のコード例は、 FindIndex ジェネリック メソッドの 3 つのオーバーロードすべてを示しています。 8 つの恐竜名を含む文字列の配列が作成され、そのうちの 2 つ (位置 1 と 5) は "saurus" で終わる。 このコード例では、 EndsWithSaurus という名前の検索述語メソッドも定義します。このメソッドは文字列パラメーターを受け取り、入力文字列が "saurus" で終わるかどうかを示すブール値を返します。

FindIndex<T>(T[], Predicate<T>) メソッドのオーバーロードは、配列を最初から走査し、各要素を EndsWithSaurus メソッドに順番に渡します。 EndsWithSaurus メソッドが位置 1 の要素のtrueを返すと、検索は停止します。

Note

C#、F#、およびVisual Basicでは、Predicate<string> デリゲート (Visual Basic では Predicate(Of String)) を明示的に作成する必要はありません。 これらの言語は、コンテキストから正しいデリゲートを推論し、自動的に作成します。

FindIndex<T>(T[], Int32, Predicate<T>) メソッドのオーバーロードは、位置 2 から配列の末尾まで続く配列を検索するために使用されます。 位置 5 で要素を検索します。 最後に、 FindIndex<T>(T[], Int32, Int32, Predicate<T>) メソッドのオーバーロードを使用して、位置 2 から始まる 3 つの要素の範囲を検索します。 その範囲に "saurus" で終わる恐竜の名前がないため、-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
 */
open System

// Search predicate returns true if a string ends in "saurus".
let endsWithSaurus (s: string) =
    s.Length > 5 && s.Substring(s.Length - 6).ToLower() = "saurus"

let dinosaurs =
    [| "Compsognathus"; "Amargasaurus"
       "Oviraptor"; "Velociraptor"
       "Deinonychus"; "Dilophosaurus"
       "Gallimimus"; "Triceratops" |]

printfn ""
for dino in dinosaurs do
    printfn $"{dino}"

Array.FindIndex(dinosaurs, endsWithSaurus)
|> printfn "\nArray.FindIndex(dinosaurs, EndsWithSaurus): %i"

Array.FindIndex(dinosaurs, 2, endsWithSaurus)
|> printfn "\nArray.FindIndex(dinosaurs, 2, EndsWithSaurus): %i"

Array.FindIndex(dinosaurs, 2, 3, endsWithSaurus)
|> printfn "\nArray.FindIndex(dinosaurs, 2, 3, EndsWithSaurus): %i"


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

ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs

指定した述語で定義されている条件に一致する要素を検索し、 Array全体で最初に見つかった位置の 0 から始まるインデックスを返します。

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

型パラメーター

T

配列の要素の型。

パラメーター

array
T[]

検索する 1 次元の 0 から始まる Array

match
Predicate<T>

検索する要素の条件を定義する Predicate<T>

返品

matchによって定義された条件に一致する要素が最初に見つかった場合は 0 から始まるインデックス。それ以外の場合は -1。

例外

arraynullです。

-又は-

matchnullです。

注釈

Arrayは、最初の要素から始まり、最後の要素で終わる順に検索されます。

Predicate<T>は、渡されたオブジェクトがデリゲートで定義されている条件と一致する場合にtrueを返すメソッドへのデリゲートです。 arrayの要素は、Predicate<T>に個別に渡されます。

このメソッドは O(n) 操作です。ここで、nLengtharrayです。

こちらもご覧ください

適用対象

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

ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs

指定した述語で定義された条件に一致する要素を検索し、指定したインデックスから最後の要素まで拡張される Array 内の要素の範囲内で最初に出現する 0 から始まるインデックスを返します。

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

型パラメーター

T

配列の要素の型。

パラメーター

array
T[]

検索する 1 次元の 0 から始まる Array

startIndex
Int32

検索の 0 から始まる開始インデックス。

match
Predicate<T>

検索する要素の条件を定義する Predicate<T>

返品

matchによって定義された条件に一致する要素が最初に見つかった場合は 0 から始まるインデックス。それ以外の場合は -1。

例外

arraynullです。

-又は-

matchnullです。

startIndex が 0 より小さいか、 arrayの長さより大きい値です。

注釈

Arrayは、startIndexから最後の要素で終わる順に検索されます。

Predicate<T>は、渡されたオブジェクトがデリゲートで定義されている条件と一致する場合にtrueを返すメソッドへのデリゲートです。 arrayの要素は、Predicate<T>に個別に渡されます。

このメソッドは O(n) 操作です。ここで、 n は、 startIndex から arrayの末尾までの要素の数です。

こちらもご覧ください

適用対象

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

ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs
ソース:
Array.cs

指定した述語で定義された条件に一致する要素を検索し、指定したインデックスから始まり、指定した数の要素を含む Array 内の要素の範囲内で最初に出現する 0 から始まるインデックスを返します。

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

型パラメーター

T

配列の要素の型。

パラメーター

array
T[]

検索する 1 次元の 0 から始まる Array

startIndex
Int32

検索の 0 から始まる開始インデックス。

count
Int32

検索するセクション内の要素の数。

match
Predicate<T>

検索する要素の条件を定義する Predicate<T>

返品

matchによって定義された条件に一致する要素が最初に見つかった場合は 0 から始まるインデックス。それ以外の場合は -1。

例外

arraynullです。

-又は-

matchnullです。

startIndex が 0 より小さいか、 arrayの長さより大きい値です。

-又は-

count が 0 未満です。

-又は-

startIndexcount は、 arrayで有効なセクションを指定しません。

注釈

Arrayが 0 より大きい場合、startIndexstartIndex から始まり、count + count - 1 で終わる順に検索されます。

Predicate<T>は、渡されたオブジェクトがデリゲートで定義されている条件と一致する場合にtrueを返すメソッドへのデリゲートです。 arrayの要素は、Predicate<T>に個別に渡されます。

このメソッドは O(n) 操作であり、 ncount

こちらもご覧ください

適用対象