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

Definisi

Menentukan apakah setiap elemen dalam array cocok dengan kondisi yang ditentukan oleh predikat yang ditentukan.

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

Jenis parameter

T

Jenis elemen array.

Parameter

array
T[]

Berbasis satu dimensi dan nol Array untuk memeriksa kondisi.

match
Predicate<T>

Predikat yang mendefinisikan kondisi untuk memeriksa terhadap elemen.

Mengembalikan

true jika setiap elemen sesuai array dengan kondisi yang ditentukan oleh predikat yang ditentukan; jika tidak, false. Jika tidak ada elemen dalam array, nilai yang dikembalikan adalah true.

Pengecualian

array adalah null.

-atau-

match adalah null.

Contoh

Contoh berikut menentukan apakah karakter terakhir dari setiap elemen dalam array string adalah angka. Ini membuat dua array string. Array pertama mencakup kedua string yang diakhir dengan karakter alfabet dan string yang diakhapi dengan karakter numerik. Array kedua hanya terdiri dari string yang diakhir dengan karakter numerik. Contoh ini juga mendefinisikan EndWithANumber metode yang tanda tangannya cocok dengan Predicate<T> delegasi. Contoh meneruskan setiap array ke TrueForAll metode bersama dengan delegasi yang mewakili EndsWithANumber metode .

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.

Contoh berikut mirip dengan yang pertama, kecuali bahwa ia meneruskan array string ke TrueForAll metode bersama dengan ekspresi lambda yang menentukan apakah elemen array tertentu diakhiri dengan representasi string angka.

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.

Dalam kedua kasus, TrueForAll metode kembali false segera setelah menemukan elemen array pertama yang tidak berakhiran angka. Jika tidak, ia akan kembali true setelah mengulangi semua elemen dalam array.

Note

Seperti yang ditunjukkan kedua contoh, dalam C# dan Visual Basic, tidak perlu membuat delegasi Predicate<string> (Predicate(Of String) Visual Basic secara eksplisit). Bahasa-bahasa ini menyimpulkan delegasi yang benar dari konteks dan membuatnya secara otomatis.

Keterangan

Predicate<T> adalah delegasi ke metode yang mengembalikantrue jika objek yang diteruskan ke metode tersebut cocok dengan kondisi yang ditentukan dalam delegasi. Elemen array diteruskan secara individual ke Predicate<T>, dan pemrosesan dihentikan ketika delegasi kembali false untuk elemen apa pun.

Metode ini adalah operasi O(n), di mana n adalah Length dari array.

Berlaku untuk

Lihat juga