Array.TrueForAll<T>(T[], Predicate<T>) Methode

Definitie

Bepaalt of elk element in de matrix overeenkomt met de voorwaarden die zijn gedefinieerd door het opgegeven predicaat.

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

Type parameters

T

Het type van de elementen van de matrix.

Parameters

array
T[]

De eendimensionale, op nul gebaseerde Array controle op basis van de voorwaarden.

match
Predicate<T>

Het predicaat dat de voorwaarden definieert die moeten worden gecontroleerd op basis van de elementen.

Retouren

true als elk element in array overeenkomt met de voorwaarden die zijn gedefinieerd door het opgegeven predicaat; falseanders. Als er geen elementen in de matrix zijn, is truede retourwaarde .

Uitzonderingen

array is null.

– of –

match is null.

Voorbeelden

In het volgende voorbeeld wordt bepaald of het laatste teken van elk element in een tekenreeksmatrix een getal is. Er worden twee tekenreeksmatrices gemaakt. De eerste matrix bevat beide tekenreeksen die eindigen op alfabetische tekens en tekenreeksen die eindigen op numerieke tekens. De tweede matrix bestaat alleen uit tekenreeksen die eindigen op numerieke tekens. In het voorbeeld wordt ook een EndWithANumber methode gedefinieerd waarvan de handtekening overeenkomt met de Predicate<T> gemachtigde. In het voorbeeld wordt elke matrix doorgegeven aan de TrueForAll methode, samen met een gemachtigde die de EndsWithANumber methode vertegenwoordigt.

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.

Het volgende voorbeeld is vergelijkbaar met het eerste, behalve dat de tekenreeksmatrix wordt doorgegeven aan de TrueForAll methode, samen met een lambda-expressie die bepaalt of een bepaald matrixelement eindigt met de tekenreeksweergave van een getal.

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.

In beide gevallen retourneert TrueForAll de false methode zodra deze het eerste matrixelement tegenkomt dat niet eindigt op een getal. Anders wordt deze geretourneerd true nadat alle elementen in de matrix zijn herhaald.

Note

Zoals beide voorbeelden laten zien, is het in C# en Visual Basic niet nodig om de Predicate<string> gedelegeerde (Predicate(Of String) in Visual Basic) expliciet te maken. Deze talen afleiden de juiste gemachtigde uit context en maken deze automatisch.

Opmerkingen

Dit Predicate<T> is een gemachtigde voor een methode die retourneerttrue als het object dat eraan is doorgegeven, overeenkomt met de voorwaarden die zijn gedefinieerd in de gemachtigde. De elementen van array worden afzonderlijk doorgegeven aan de Predicate<T>en verwerking wordt gestopt wanneer de gemachtigde terugkeert false voor een element.

Deze methode is een O(n)-bewerking, waarbij n de Length van array.

Van toepassing op

Zie ook