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

Definition

Bestimmt, ob jedes Element im Array die vom angegebenen Prädikat definierten Bedingungen erfüllt.

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[]

Das eindimensionale nullbasierte Array, das auf die Bedingungen geprüft werden soll.

match
Predicate<T>

Das Prädikat, das die Bedingungen definiert, auf die die Elemente geprüft werden sollen.

Gibt zurück

true, wenn jedes Element im array die vom angegebenen Prädikat definierten Bedingungen erfüllt, andernfalls false. Wenn keine Elemente im Array vorhanden sind, lautet der Rückgabewert true.

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 werden zwei Zeichenfolgenarrays erstellt. Das erste Array enthält sowohl Zeichenfolgen, die mit alphabetischen Zeichen enden, als auch Zeichenfolgen, die mit numerischen Zeichen enden. Das zweite Array besteht nur aus Zeichenfolgen, die mit numerischen Zeichen enden. Das Beispiel definiert auch eine EndWithANumber Methode, deren Signatur mit dem Predicate<T> Delegaten übereinstimmt. Im Beispiel wird jedes Array zusammen mit einem Delegaten, der TrueForAll die -Methode darstellt, an die EndsWithANumber -Methode übergeben.

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 dem Unterschied, dass es das Zeichenfolgenarray zusammen mit einem Lambdaausdruck 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 gibt die TrueForAll Methode zurück false , sobald sie auf das erste Arrayelement trifft, das nicht in einer Zahl endet. Andernfalls wird nach dem Durchlaufen aller Elemente im Array zurückgegeben true .

Hinweis

Wie beide Beispiele zeigen, ist es in C# und Visual Basic nicht erforderlich, den Predicate<string> Delegaten (Predicate(Of String) in Visual Basic) explizit zu erstellen. Diese Sprachen leiten den richtigen Delegat aus dem Kontext ab und erstellen ihn automatisch.

Hinweise

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

Diese Methode ist ein O(n)-Vorgang, wobei n der Length von arrayist.

Gilt für:

Weitere Informationen