Array.TrueForAll<T>(T[], Predicate<T>) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
배열의 모든 요소가 지정한 조건자에 정의된 조건과 일치하는지를 확인합니다.
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
형식 매개 변수
- T
배열 요소의 형식입니다.
매개 변수
- array
- T[]
조건에 대해 확인할 1차원 Array (인덱스는 0부터 시작)입니다.
- match
- Predicate<T>
요소에 대해 확인할 조건을 정의하는 조건자입니다.
반환
array
의 모든 요소가 지정한 조건자에 정의된 조건과 일치하면 true
이고, 그렇지 않으면 false
입니다. 배열에 요소가 없으면 반환 값은 true
입니다.
예외
예제
다음 예제에서는 문자열 배열에 있는 각 요소의 마지막 문자가 숫자인지 여부를 확인합니다. 두 개의 문자열 배열을 만듭니다. 첫 번째 배열에는 알파벳 문자로 끝나는 문자열과 숫자 문자로 끝나는 문자열이 모두 포함됩니다. 두 번째 배열은 숫자 문자로 끝나는 문자열로만 구성됩니다. 이 예제에서는 시그니처가 EndWithANumber
대리자와 일치하는 메서드도 정의합니다 Predicate<T> . 이 예제에서는 메서드를 나타내는 대리자와 함께 각 배열 TrueForAll 을 메서드에 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.
다음 예제는 특정 배열 TrueForAll 요소가 숫자의 문자열 표현으로 끝나는지 여부를 결정하는 람다 식과 함께 문자열 배열을 메서드에 전달한다는 점을 제외하고 첫 번째 예제와 비슷합니다.
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.
두 경우 모두 메서드는 TrueForAll 숫자로 끝나지 않는 첫 번째 배열 요소가 발견되는 즉시 반환 false
됩니다. 그렇지 않으면 배열의 모든 요소를 반복한 후 반환 true
됩니다.
참고
두 예제에서 보여 주듯이 C# 및 Visual Basic 대리자를 명시적으로 만들 Predicate<string>
필요가 없습니다(Predicate(Of String)
Visual Basic). 이러한 언어는 컨텍스트에서 올바른 대리자를 유추하고 자동으로 만듭니다.
설명
전달 Predicate<T> 된 개체가 대리자에서 정의된 조건과 일치하는지 반환true
하는 메서드에 대한 대리자입니다. 요소는 array
개별적으로 전달되며 대리자가 모든 요소에 Predicate<T>대해 반환 false
될 때 처리가 중지됩니다.
이 메서드는 O(n
) 연산입니다. 여기서 n
는 Length array
.