Array.TrueForAll<T>(T[], Predicate<T>) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
配列内のすべての要素が、指定された述語によって定義された条件と一致するかどうかを調べます。
public:
generic <typename T>
static bool TrueForAll(cli::array <T> ^ array, Predicate<T> ^ match);
public static bool TrueForAll<T> (T[] array, Predicate<T> match);
static member TrueForAll : 'T[] * Predicate<'T> -> bool
Public Shared Function TrueForAll(Of T) (array As T(), match As Predicate(Of T)) As Boolean
型パラメーター
- T
配列要素の型。
パラメーター
- array
- T[]
条件が一致するかどうかをチェックする 1 次元の Array。インデックス番号は 0 から始まります。
- match
- Predicate<T>
要素についてチェックする条件を定義する述語。
戻り値
array
内のすべての要素が、指定された述語によって定義された条件と一致する場合は true
。それ以外の場合は false
。 配列内に要素がない場合、戻り値は true
です。
例外
例
次の例では、文字列配列内の各要素の最後の文字が数値かどうかを判断します。 2 つの文字列配列を作成します。 最初の配列には、アルファベットで終わる文字列と、数字で終わる文字列の両方が含まれます。 2 番目の配列は、数字で終わる文字列のみで構成されます。 この例では、デリゲートに EndWithANumber
一致するシグネチャを持つメソッドも定義します Predicate<T> 。 この例では、 メソッドを表すデリゲートと共に TrueForAll 、各配列を メソッドに EndsWithANumber
渡します。
using System;
public class Example
{
public static void Main()
{
String[] values1 = { "Y2K", "A2000", "DC2A6", "MMXIV", "0C3" };
String[] values2 = { "Y2", "A2000", "DC2A6", "MMXIV_0", "0C3" };
if (Array.TrueForAll(values1, EndsWithANumber))
Console.WriteLine("All elements end with an integer.");
else
Console.WriteLine("Not all elements end with an integer.");
if (Array.TrueForAll(values2, EndsWithANumber))
Console.WriteLine("All elements end with an integer.");
else
Console.WriteLine("Not all elements end with an integer.");
}
private static bool EndsWithANumber(string value)
{
int s;
return int.TryParse(value.Substring(value.Length - 1), out s);
}
}
// The example displays the following output:
// Not all elements end with an integer.
// All elements end with an integer.
open System
let endsWithANumber (value: string) =
value.Substring(value.Length - 1)
|> Int32.TryParse
|> fst
let values1 = [| "Y2K"; "A2000"; "DC2A6"; "MMXIV"; "0C3" |]
let values2 = [| "Y2"; "A2000"; "DC2A6"; "MMXIV_0"; "0C3" |]
if Array.TrueForAll(values1, endsWithANumber) then
printfn "All elements end with an integer."
else
printfn "Not all elements end with an integer."
if Array.TrueForAll(values2, endsWithANumber) then
printfn "All elements end with an integer."
else
printfn "Not all elements end with an integer."
// The example displays the following output:
// Not all elements end with an integer.
// All elements end with an integer.
Module Example
Public Sub Main()
Dim values1() As String = { "Y2K", "A2000", "DC2A6", "MMXIV", "0C3" }
Dim values2() As String = { "Y2", "A2000", "DC2A6", "MMXIV_0", "0C3" }
If Array.TrueForAll(values1, AddressOf EndsWithANumber) Then
Console.WriteLine("All elements end with an integer.")
Else
Console.WriteLine("Not all elements end with an integer.")
End If
If Array.TrueForAll(values2, AddressOf EndsWithANumber) Then
Console.WriteLine("All elements end with an integer.")
Else
Console.WriteLine("Not all elements end with an integer.")
End If
End Sub
Private Function EndsWithANumber(value As String) As Boolean
Dim s As Integer
Return Int32.TryParse(value.Substring(value.Length - 1), s)
End Function
End Module
' The example displays the following output:
' Not all elements end with an integer.
' All elements end with an integer.
次の例は、最初の例と似ていますが、特定の配列要素が数値の TrueForAll 文字列表現で終わるかどうかを判断するラムダ式と共に文字列配列を メソッドに渡す点が除きます。
using System;
public class Example
{
public static void Main()
{
String[] values = { "Y2K", "A2000", "DC2A6", "MMXIV", "0C3" };
if (Array.TrueForAll(values, value => {
int s;
return int.TryParse(value.Substring(value.Length - 1), out s); }
))
Console.WriteLine("All elements end with an integer.");
else
Console.WriteLine("Not all elements end with an integer.");
}
}
// The example displays the following output:
// Not all elements end with an integer.
open System
let values = [| "Y2K"; "A2000"; "DC2A6"; "MMXIV"; "0C3" |]
if Array.TrueForAll(values,
fun value ->
value.Substring(value.Length - 1)
|> Int32.TryParse
|> fst) then
printfn "All elements end with an integer."
else
printfn "Not all elements end with an integer."
// The example displays the following output:
// Not all elements end with an integer.
Module Example
Public Sub Main()
Dim values() As String = { "Y2K", "A2000", "DC2A6", "MMXIV", "0C3" }
'Dim values2() As String = { "Y2", "A2000", "DC2A6", "MMXIV_0", "0C3" }
If Array.TrueForAll(values, Function(value)
Dim s As Integer
Return Int32.TryParse(value.Substring(value.Length - 1), s)
End Function) Then
Console.WriteLine("All elements end with an integer.")
Else
Console.WriteLine("Not all elements end with an integer.")
End If
End Sub
End Module
' The example displays the following output:
' Not all elements end with an integer.
どちらの場合も、メソッドは TrueForAll 、数値で終わらない最初の配列要素を検出するとすぐに を返 false
します。 それ以外の場合は、配列内のすべての要素を反復処理した後に を返 true
します。
注意
どちらの例も示すように、C# と Visual Basic では、デリゲート (Predicate(Of String)
Visual Basic では) をPredicate<string>
明示的に作成する必要はありません。 これらの言語は、コンテキストから正しいデリゲートを推論し、自動的に作成します。
注釈
Predicate<T>は、渡されたオブジェクトがデリゲートで定義されている条件と一致する場合に を返すtrue
メソッドへのデリゲートです。 の array
要素は に個別に渡され Predicate<T>、デリゲートから任意の要素が返 false
されると処理が停止されます。
このメソッドは O(n
) 操作です。ここで n
、 Length は の array
です。
適用対象
こちらもご覧ください
.NET