Array.TrueForAll<T>(T[], Predicate<T>) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
true
jeś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
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