Udostępnij za pośrednictwem


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

Definicja

Określa, czy każdy element w tablicy jest zgodny z warunkami zdefiniowanymi przez określony predykat.

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

Parametry typu

T

Typ elementów tablicy.

Parametry

array
T[]

Jednowymiarowa, zero oparta Array na sprawdzaniu warunków.

match
Predicate<T>

Predykat, który definiuje warunki sprawdzania względem elementów.

Zwraca

truejeśli każdy element w pliku array jest zgodny z warunkami zdefiniowanymi przez określony predykat; w przeciwnym razie . false Jeśli w tablicy nie ma żadnych elementów, zwracana wartość to true.

Wyjątki

array to null.

-lub-

match to null.

Przykłady

Poniższy przykład określa, czy ostatni znak każdego elementu w tablicy ciągów jest liczbą. Tworzy dwie tablice ciągów. Pierwsza tablica zawiera zarówno ciągi, które kończą się znakami alfabetycznymi, jak i ciągami kończącymi się znakami liczbowymi. Druga tablica składa się tylko z ciągów, które kończą się znakami liczbowymi. W przykładzie zdefiniowano również metodę EndWithANumber , której podpis pasuje do delegata Predicate<T> . Przykład przekazuje każdą tablicę TrueForAll do metody wraz z delegatem reprezentującym metodę EndsWithANumber .

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.

Poniższy przykład jest podobny do pierwszego, z wyjątkiem tego, że przekazuje tablicę ciągów do TrueForAll metody wraz z wyrażeniem lambda, które określa, czy określony element tablicy kończy się reprezentacją ciągu liczby.

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.

W obu przypadkach TrueForAll metoda zwraca się false zaraz po napotkaniu pierwszego elementu tablicy, który nie kończy się liczbą. W przeciwnym razie funkcja zwraca wartość po true iterowaniu wszystkich elementów w tablicy.

Uwaga

Jak pokazano w obu przykładach, w języku C# i Visual Basic nie jest konieczne jawne utworzenie delegata Predicate<string> (Predicate(Of String) w Visual Basic). Te języki wnioskują o poprawnym delegacie z kontekstu, a następnie są tworzone automatycznie.

Uwagi

Jest Predicate<T> delegatem do metody, która zwracatrue , jeśli obiekt przekazany do niego jest zgodny z warunkami zdefiniowanymi w delegatu. Elementy elementu array są indywidualnie przekazywane do Predicate<T>obiektu , a przetwarzanie jest zatrzymywane, gdy delegat zwraca false dowolny element.

Ta metoda jest operacją O(), gdzie n jest wartością Lengtharray.n

Dotyczy

Zobacz też