Array.TrueForAll<T>(T[], Predicate<T>) メソッド

定義

配列内のすべての要素が、指定された述語によって定義された条件と一致するかどうかを調べます。Determines whether every element in the array matches the conditions defined by the specified predicate.

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

配列要素の型。The type of the elements of the array.

パラメーター

array
T[]

条件が一致するかどうかをチェックする 1 次元の Array。インデックス番号が 0 から始まる必要があります。The one-dimensional, zero-based Array to check against the conditions.

match
Predicate<T>

要素の条件を定義する述語。The predicate that defines the conditions to check against the elements.

戻り値

array 内のすべての要素が、指定された述語によって定義された条件と一致する場合は true。それ以外の場合は falsetrue if every element in array matches the conditions defined by the specified predicate; otherwise, false. 配列内に要素がない場合、戻り値は true です。If there are no elements in the array, the return value is true.

例外

arraynull です。array is null.

- または --or- matchnullです。match is null.

次の例では、文字列配列内の各要素の最後の文字が数値であるかどうかを判断します。The following example determines whether the last character of each element in a string array is a number. 2つの文字列配列を作成します。It creates two string arrays. 最初の配列には、アルファベット文字で終わる文字列と、数字で終わる文字列の両方が含まれています。2番目の配列は、数字で終わる文字列のみで構成されます。The first array includes both strings that end with alphabetic characters and strings that end with numeric characters.The second array consists only of strings that end with numeric characters. また、この例では、Predicate<T> デリゲートと一致するシグネチャを持つ EndWithANumber メソッドも定義します。The example also defines an EndWithANumber method whose signature matches the Predicate<T> delegate. この例では、各配列を、EndsWithANumber メソッドを表すデリゲートと共に TrueForAll メソッドに渡します。The example passes each array to the TrueForAll method along with a delegate that represents the EndsWithANumber method.

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 Int32.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.
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 メソッドに渡している点が異なります。The following example is similar to the first, except that it passes the string array to the TrueForAll method along with a lambda expression that determines whether a particular array element ends with the string representation of a number.

using System;

public class Example
{
   public static void Main()
   {
      String[] values = { "Y2K", "A2000", "DC2A6", "MMXIV", "0C3" };
      if (Array.TrueForAll(values, value => {
                                      int s; 
                                      return Int32.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.
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 を返します。In both cases, the TrueForAll method returns false as soon as it encounters the first array element that does not end in a number. それ以外の場合は、配列内のすべての要素を反復処理した後に true を返します。Otherwise, it returns true after iterating all the elements in the array.

注意

両方の例でC# 、と Visual Basic では、Predicate<string>デリゲート (Visual Basic でPredicate(Of String)) を明示的に作成する必要はありません。As both examples show, in C# and Visual Basic, it is not necessary to create the Predicate<string> delegate (Predicate(Of String) in Visual Basic) explicitly. これらの言語は、コンテキストから正しいデリゲートを推測し、自動的に作成します。These languages infer the correct delegate from context and create it automatically.

注釈

Predicate<T> は、渡されたオブジェクトがデリゲートで定義されている条件に一致する場合にtrue を返すメソッドのデリゲートです。The Predicate<T> is a delegate to a method that returnstrue if the object passed to it matches the conditions defined in the delegate. array の要素は、個別に Predicate<T>に渡され、デリゲートが任意の要素に対して false を返すと処理が停止します。The elements of array are individually passed to the Predicate<T>, and processing is stopped when the delegate returns false for any element.

このメソッドは O (n) 操作で、narrayLength です。This method is an O(n) operation, where n is the Length of array.

適用対象

こちらもご覧ください