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

Définition

Détermine si chaque élément dans le tableau correspond aux conditions définies par le prédicat spécifié.

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

Paramètres de type

T

Type des éléments du tableau.

Paramètres

array
T[]

Array de base zéro unidimensionnel à vérifier par rapport aux conditions.

match
Predicate<T>

Le prédicat qui définit les conditions à vérifier par rapport aux éléments.

Retours

Boolean

true si chaque élément dans array correspond aux conditions définies par le prédicat spécifié ; sinon, false. Si le tableau ne contient pas d’éléments, la valeur de retour est true.

Exceptions

array a la valeur null.

-ou-

match a la valeur null.

Exemples

L’exemple suivant détermine si le dernier caractère de chaque élément d’un tableau de chaînes est un nombre. Il crée deux tableaux de chaînes. Le premier tableau comprend les deux chaînes qui se terminent par des caractères alphabétiques et des chaînes qui se terminent par des caractères numériques. Le deuxième tableau se compose uniquement de chaînes qui se terminent par des caractères numériques. L’exemple définit également une EndWithANumber méthode dont la signature correspond au Predicate<T> délégué. L’exemple transmet chaque tableau à la TrueForAll méthode ainsi qu’un délégué qui représente la EndsWithANumber méthode.

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.

L’exemple suivant est similaire au premier, sauf qu’il transmet le tableau de chaînes à la TrueForAll méthode ainsi qu’une expression lambda qui détermine si un élément de tableau particulier se termine par la représentation sous forme de chaîne d’un nombre.

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.

Dans les deux cas, la TrueForAll méthode retourne false dès qu’elle rencontre le premier élément de tableau qui ne se termine pas par un nombre. Sinon, elle retourne true après itération tous les éléments du tableau.

Notes

Comme les deux exemples montrent, en C# et Visual Basic, il n’est pas nécessaire de créer explicitement le Predicate<string> délégué (Predicate(Of String)dans Visual Basic). Ces langages déduitnt le délégué correct du contexte et créez-le automatiquement.

Remarques

Il Predicate<T> s’agit d’un délégué à une méthode qui retournetrue si l’objet passé à celui-ci correspond aux conditions définies dans le délégué. Les éléments d’un array élément sont transmis individuellement au Predicate<T>processus et le traitement est arrêté lorsque le délégué retourne false pour n’importe quel élément.

Cette méthode est une opération O(n), où n est le Length .array

S’applique à

Voir aussi