Array.TrueForAll<T>(T[], Predicate<T>) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Avgör om varje element i matrisen matchar de villkor som definieras av det angivna predikatet.
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
Typparametrar
- T
Typ av element i matrisen.
Parametrar
- array
- T[]
Den endimensionella, nollbaserade Array för att kontrollera villkoren.
- match
- Predicate<T>
Predikatet som definierar villkoren för att kontrollera mot elementen.
Returer
trueom varje element i array matchar de villkor som definierats av det angivna predikatet, annars . false Om det inte finns några element i matrisen är truereturvärdet .
Undantag
Exempel
I följande exempel avgörs om det sista tecknet för varje element i en strängmatris är ett tal. Den skapar två strängmatriser. Den första matrisen innehåller både strängar som slutar med alfabetiska tecken och strängar som slutar med numeriska tecken. Den andra matrisen består bara av strängar som slutar med numeriska tecken. Exemplet definierar också en EndWithANumber metod vars signatur matchar ombudet Predicate<T> . Exemplet skickar varje matris till TrueForAll metoden tillsammans med ett ombud som representerar EndsWithANumber metoden.
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.
Följande exempel liknar det första, förutom att det skickar strängmatrisen TrueForAll till metoden tillsammans med ett lambda-uttryck som avgör om ett visst matriselement slutar med strängrepresentationen av ett tal.
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.
I båda fallen TrueForAll returnerar false metoden så fort den stöter på det första matriselementet som inte slutar med ett tal. Annars returneras true den efter iterering av alla element i matrisen.
Note
Som båda exemplen visar i C# och Visual Basic är det inte nödvändigt att skapa Predicate<string>-ombudet (Predicate(Of String) i Visual Basic) explicit. Dessa språk härleder rätt ombud från kontexten och skapar det automatiskt.
Kommentarer
Predicate<T> är ett ombud till en metod som returnerartrue om objektet som skickas till det matchar de villkor som definierats i ombudet. Elementen array i skickas individuellt till Predicate<T>, och bearbetningen stoppas när ombudet returnerar false för alla element.
Den här metoden är en O()-nåtgärd, där n är för Lengtharray.