Comparteix a través de


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

Definición

Determina si cada elemento de la matriz cumple las condiciones definidas por el 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

Tipo de los elementos de la matriz.

Parámetros

array
T[]

Matriz Array unidimensional de base cero en la que se van a comprobar las condiciones.

match
Predicate<T>

El predicado que define las condiciones que se van a comprobar en los elementos.

Devoluciones

Boolean

true si cada elemento de array cumple las condiciones definidas por el predicado especificado; de lo contrario, false. Si no hay ningún elemento en la matriz, el valor devuelto es true.

Excepciones

array es null.

O bien

match es null.

Ejemplos

En el ejemplo siguiente se determina si el último carácter de cada elemento de una matriz de cadenas es un número. Crea dos matrices de cadenas. La primera matriz incluye ambas cadenas que terminan con caracteres alfabéticos y cadenas que terminan con caracteres numéricos. La segunda matriz consta solo de cadenas que terminan con caracteres numéricos. En el ejemplo también se define un EndWithANumber método cuya firma coincide con el Predicate<T> delegado. En el ejemplo se pasa cada matriz al TrueForAll método junto con un delegado que representa el 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.

El ejemplo siguiente es similar al primero, salvo que pasa la matriz de cadenas al TrueForAll método junto con una expresión lambda que determina si un elemento de matriz determinado termina con la representación de cadena de un 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.

En ambos casos, el TrueForAll método devuelve false tan pronto como encuentra el primer elemento de matriz que no termina en un número. De lo contrario, devuelve true después de iterar todos los elementos de la matriz.

Nota

Como se muestran en ambos ejemplos, en C# y Visual Basic, no es necesario crear explícitamente el Predicate<string> delegado (Predicate(Of String) en Visual Basic). Estos idiomas deducen el delegado correcto del contexto y lo crean automáticamente.

Comentarios

Predicate<T> es un delegado de un método que devuelvetrue si el objeto pasado a él coincide con las condiciones definidas en el delegado. Los elementos de array se pasan individualmente a Predicate<T>y el procesamiento se detiene cuando el delegado devuelve false para cualquier elemento.

Este método es una operación O(n), donde n es el Length de array.

Se aplica a

Consulte también