Array.TrueForAll<T>(T[], Predicate<T>) Método

Definição

Determina se cada elemento na matriz corresponde às condições definidas pelo predicado especificado.

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

Parâmetros de tipo

T

O tipo dos elementos da matriz.

Parâmetros

array
T[]

O Array unidimensional, com base em zero a ser verificado em relação às condições.

match
Predicate<T>

O predicado que define as condições a serem verificadas nos elementos.

Retornos

Boolean

true se cada elemento no array corresponder às condições definidas pelo predicado especificado; caso contrário, false. Se não houver nenhum elemento na matriz, o valor retornado será true.

Exceções

array é null.

- ou -

match é null.

Exemplos

O exemplo a seguir determina se o último caractere de cada elemento em uma matriz de cadeia de caracteres é um número. Ele cria duas matrizes de cadeia de caracteres. A primeira matriz inclui cadeias de caracteres que terminam com caracteres alfabéticos e cadeias de caracteres que terminam com caracteres numéricos. A segunda matriz consiste apenas em cadeias de caracteres que terminam com caracteres numéricos. O exemplo também define um EndWithANumber método cuja assinatura corresponde ao Predicate<T> delegado. O exemplo passa cada matriz para o TrueForAll método junto com um delegado que representa o EndsWithANumber método.

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.

O exemplo a seguir é semelhante ao primeiro, exceto que ele passa a matriz de cadeia de caracteres para o TrueForAll método junto com uma expressão lambda que determina se um determinado elemento de matriz termina com a representação de cadeia de caracteres de um número.

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.

Em ambos os casos, o TrueForAll método retorna false assim que encontra o primeiro elemento de matriz que não termina em um número. Caso contrário, ele retornará true depois de iterar todos os elementos na matriz.

Observação

Como os dois exemplos mostram, em C# e Visual Basic, não é necessário criar o Predicate<string> delegado (Predicate(Of String) em Visual Basic) explicitamente. Essas linguagens inferem o representante correto pelo contexto e criam-no automaticamente.

Comentários

O Predicate<T> é um delegado para um método que retornatrue se o objeto passado para ele corresponder às condições definidas no delegado. Os elementos são array passados individualmente para o , e o Predicate<T>processamento é interrompido quando o delegado retorna false para qualquer elemento.

Este método é uma operação O(n), em que n é o Length de array.

Aplica-se a

Confira também