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

Definition

Bestimmt, ob jedes Element im Array mit den bedingungen übereinstimmt, die durch das angegebene Prädikat definiert wurden.

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

Typparameter

T

Der Typ der Elemente des Arrays.

Parameter

array
T[]

Die eindimensionale nullbasierte Array Überprüfung der Bedingungen.

match
Predicate<T>

Das Prädikat, das die Bedingungen definiert, um die Elemente zu überprüfen.

Gibt zurück

truewenn jedes Element in array den bedingungen entspricht, die durch das angegebene Prädikat definiert werden; andernfalls . false Wenn keine Elemente im Array vorhanden sind, lautet trueder Rückgabewert .

Ausnahmen

array ist null.

-oder-

match ist null.

Beispiele

Im folgenden Beispiel wird ermittelt, ob das letzte Zeichen jedes Elements in einem Zeichenfolgenarray eine Zahl ist. Es erstellt zwei Zeichenfolgenarrays. Das erste Array enthält beide Zeichenfolgen, die mit alphabetischen Zeichen und Zeichenfolgen enden, die mit numerischen Zeichen enden. Das zweite Array besteht nur aus Zeichenfolgen, die mit numerischen Zeichen enden. Im Beispiel wird auch eine EndWithANumber Methode definiert, deren Signatur dem Predicate<T> Delegat entspricht. Im Beispiel wird jedes Array zusammen mit einem Delegaten an die TrueForAll Methode übergeben, der die EndsWithANumber Methode darstellt.

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.

Das folgende Beispiel ähnelt dem ersten, mit der Ausnahme, dass es das Zeichenfolgenarray zusammen mit einem Lambda-Ausdruck an die TrueForAll Methode übergibt, der bestimmt, ob ein bestimmtes Arrayelement mit der Zeichenfolgendarstellung einer Zahl endet.

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 beiden Fällen wird die TrueForAll Methode zurückgegeben false , sobald das erste Arrayelement auftritt, das nicht in einer Zahl endet. Andernfalls wird sie nach dem Durchlaufen aller Elemente im Array zurückgegeben true .

Note

Wie beide Beispiele zeigen, ist es in C# und Visual Basic nicht erforderlich, den Predicate<string> Delegat (Predicate(Of String) in Visual Basic) explizit zu erstellen. In diesen Sprachen wird der richtige Delegat aus dem Kontext abgeleitet und automatisch erstellt.

Hinweise

Dies Predicate<T> ist ein Delegat an eine Methode, die zurückgibttrue , wenn das an sie übergebene Objekt den in der Stellvertretung definierten Bedingungen entspricht. Die Elemente werden array einzeln an das Predicate<T>Element übergeben, und die Verarbeitung wird beendet, wenn der Delegat für jedes Element zurückgibt false .

Bei dieser Methode handelt es sich um einen O()-Vorgang, bei dem n es sich um einen n OLength(array)-Vorgang handelt.

Gilt für:

Weitere Informationen