Array.FindIndex メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定された述語によって定義された条件と一致する要素を、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
渡します。 メソッドが 1 桁目の EndsWithSaurus
要素を true
返すと、検索は停止します。
注意
C#、F#、および Visual Basic では、デリゲート (Predicate(Of String)
Visual Basic では) をPredicate<string>
明示的に作成する必要はありません。 これらの言語は、コンテキストから正しいデリゲートを推論し、自動的に作成します。
メソッド オーバーロードは FindIndex<T>(T[], Int32, Predicate<T>) 、位置 2 から配列の末尾まで続く配列を検索するために使用されます。 位置 5 で 要素を検索します。 最後に、メソッド オーバーロードを FindIndex<T>(T[], Int32, Int32, Predicate<T>) 使用して、位置 2 から始まる 3 つの要素の範囲を検索します。 その範囲に "サウルス" で終わる恐竜の名前がないため、-1 が返されます。
using namespace System;
// Search predicate returns true if a string ends in "saurus".
bool EndsWithSaurus(String^ s)
{
if ((s->Length > 5) &&
(s->Substring(s->Length - 6)->ToLower() == "saurus"))
{
return true;
}
else
{
return false;
}
};
void main()
{
array<String^>^ dinosaurs = { "Compsognathus",
"Amargasaurus", "Oviraptor", "Velociraptor",
"Deinonychus", "Dilophosaurus", "Gallimimus",
"Triceratops" };
Console::WriteLine();
for each(String^ dinosaur in dinosaurs )
{
Console::WriteLine(dinosaur);
}
Console::WriteLine("\nArray::FindIndex(dinosaurs, EndsWithSaurus): {0}",
Array::FindIndex(dinosaurs, gcnew Predicate<String^>(EndsWithSaurus)));
Console::WriteLine("\nArray::FindIndex(dinosaurs, 2, EndsWithSaurus): {0}",
Array::FindIndex(dinosaurs, 2, gcnew Predicate<String^>(EndsWithSaurus)));
Console::WriteLine("\nArray::FindIndex(dinosaurs, 2, 3, EndsWithSaurus): {0}",
Array::FindIndex(dinosaurs, 2, 3, gcnew Predicate<String^>(EndsWithSaurus)));
}
/* 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
*/
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 全体から、指定した述語によって定義される条件に一致する要素を検索し、最もインデックス番号の小さい要素の 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 次元の Array。インデックス番号は 0 から始まります。
- match
- Predicate<T>
検索する要素の条件を定義する Predicate<T>。
戻り値
match
で定義された条件と一致する要素が存在した場合、最もインデックス番号の小さい要素の 0 から始まるインデックス。それ以外の場合は -1。
例外
注釈
は Array 、最初の要素から始まり、最後の要素で終わる順に検索されます。
Predicate<T>は、渡されたオブジェクトがデリゲートで定義されている条件と一致する場合に を返すtrue
メソッドへのデリゲートです。 の array
要素は、 に個別に Predicate<T>渡されます。
このメソッドは O(n
) 操作です。ここで n
、 Length は の array
です。
こちらもご覧ください
- Exists<T>(T[], Predicate<T>)
- Find<T>(T[], Predicate<T>)
- FindLast<T>(T[], Predicate<T>)
- FindAll<T>(T[], Predicate<T>)
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
適用対象
FindIndex<T>(T[], Int32, Predicate<T>)
- ソース:
- 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 次元の Array。インデックス番号は 0 から始まります。
- startIndex
- Int32
検索の開始位置を示す 0 から始まるインデックス。
- match
- Predicate<T>
検索する要素の条件を定義する Predicate<T>。
戻り値
match
で定義された条件と一致する要素が存在した場合、最もインデックス番号の小さい要素の 0 から始まるインデックス。それ以外の場合は -1。
例外
startIndex
は array
の有効なインデックスの範囲外です。
注釈
は Array 、最後の要素から startIndex
始まり、最後の要素で終わる順に検索されます。
Predicate<T>は、渡されたオブジェクトがデリゲートで定義されている条件と一致する場合に を返すtrue
メソッドへのデリゲートです。 の array
要素は、 に個別に Predicate<T>渡されます。
このメソッドは O(n
) 操作です。ここで n
、 は から の末尾までの要素 startIndex
の array
数です。
こちらもご覧ください
- Exists<T>(T[], Predicate<T>)
- Find<T>(T[], Predicate<T>)
- FindLast<T>(T[], Predicate<T>)
- FindAll<T>(T[], Predicate<T>)
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
適用対象
FindIndex<T>(T[], Int32, Int32, Predicate<T>)
- ソース:
- 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 次元の Array。インデックス番号は 0 から始まります。
- startIndex
- Int32
検索の開始位置を示す 0 から始まるインデックス。
- count
- Int32
検索対象の範囲内にある要素の数。
- match
- Predicate<T>
検索する要素の条件を定義する Predicate<T>。
戻り値
match
で定義された条件と一致する要素が存在した場合、最もインデックス番号の小さい要素の 0 から始まるインデックス。それ以外の場合は -1。
例外
startIndex
は array
の有効なインデックスの範囲外です。
または
count
が 0 未満です。
または
startIndex
および count
は array
内の有効なセクションを指定していません。
注釈
Arrayが 0 より大きい場合count
は、 からstartIndex
順に検索され、プラス count
-1 でstartIndex
終わる。
Predicate<T>は、渡されたオブジェクトがデリゲートで定義されている条件と一致する場合に を返すtrue
メソッドへのデリゲートです。 の array
要素は、 に個別に Predicate<T>渡されます。
このメソッドは O(n
) 操作です。n
は count
です。
こちらもご覧ください
- Exists<T>(T[], Predicate<T>)
- Find<T>(T[], Predicate<T>)
- FindLast<T>(T[], Predicate<T>)
- FindAll<T>(T[], Predicate<T>)
- BinarySearch
- IndexOf
- LastIndexOf
- Predicate<T>
適用対象
.NET