Array.TrueForAll<T>(T[], Predicate<T>) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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
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
.