Array.Find(T[], Predicate<T>) Array.Find(T[], Predicate<T>) Array.Find(T[], Predicate<T>) Array.Find(T[], Predicate<T>) Method

정의

지정된 조건자에 정의된 조건과 일치하는 요소를 검색하고 전체 Array에서 처음으로 검색한 요소를 반환합니다.Searches for an element that matches the conditions defined by the specified predicate, and returns the first occurrence within the entire Array.

public:
generic <typename T>
 static T Find(cli::array <T> ^ array, Predicate<T> ^ match);
public static T Find<T> (T[] array, Predicate<T> match);
static member Find : 'T[] * Predicate<'T> -> 'T
Public Shared Function Find(Of T) (array As T(), match As Predicate(Of T)) As T

형식 매개 변수

T

배열 요소의 형식입니다.The type of the elements of the array.

매개 변수

array
T[]

검색할 1차원(인덱스는 0부터 시작) 배열입니다.The one-dimensional, zero-based array to search.

match
Predicate<T> Predicate<T> Predicate<T> Predicate<T>

검색할 요소의 조건을 정의하는 조건자입니다.The predicate that defines the conditions of the element to search for.

반환

T T T T

지정된 조건자에 정의된 조건과 일치하는 요소가 있으면 일치하는 요소 중 첫 번째 요소이고, 그렇지 않으면 T 형식의 기본값입니다.The first element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type T.

예외

arraynull인 경우array is null.

또는-or- matchnull입니다.match is null.

예제

다음 예에서는 Predicate<T> 사용 하 여 대리자를 Find 배열을 검색할 제네릭 메서드 Point 구조입니다.The following example uses a Predicate<T> delegate with the Find generic method to search an array of Point structures. 대리자가 나타내는 메서드가 ProductGT10를 반환 합니다 true X 및 Y 필드의 곱이 100,000 보다 큰 경우.The method the delegate represents, ProductGT10, returns true if the product of the X and Y fields is greater than 100,000. Find 테스트 조건을 충족 하는 첫 번째 요소를 반환 하는 배열의 각 요소에 대 한 대리자를 호출 합니다.The Find method calls the delegate for each element of the array, returning the first point that meets the test condition.

참고

Visual Basic 및 C# 사용자가 없는 대리자를 명시적으로 만들거나 제네릭 메서드의 형식 인수를 지정 합니다.Visual Basic and C# users do not have to create the delegate explicitly or specify the type argument of the generic method. 컴파일러에 제공 하는 메서드 인수에서 필요한 형식을 결정 합니다.The compilers determine the necessary types from the method arguments you supply.

using System;
using System.Drawing;

public class Example
{
    public static void Main()
    {
        // Create an array of five Point structures.
        Point[] points = { new Point(100, 200), 
            new Point(150, 250), new Point(250, 375), 
            new Point(275, 395), new Point(295, 450) };

        // Find the first Point structure for which X times Y 
        // is greater than 100000. 
        Point first = Array.Find(points, ProductGT10);

        // Display the first structure found.
        Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y);
    }

    // Return true if X times Y is greater than 100000.
    private static bool ProductGT10(Point p)
    {
        return p.X * p.Y > 100000;
    }
}
// The example displays the following output:
//       Found: X = 275, Y = 395
Imports System.Drawing

Public Module Example
   Public Sub Main()
      ' Create an array of five Point structures.
      Dim points() As Point = { new Point(100, 200), _
            new Point(150, 250), new Point(250, 375), _
            new Point(275, 395), new Point(295, 450) }

      ' Find the first Point structure for which X times Y 
      ' is greater than 100000. 
      Dim first As Point = Array.Find(points, AddressOf ProductGT10)

      ' Display the first structure found.
      Console.WriteLine("Found: X = {0}, Y = {1}", _
            first.X, first.Y)
   End Sub

   ' Return true if X times Y is greater than 100000.
   Private Function ProductGT10(ByVal p As Point) As Boolean
      Return p.X * p.Y > 100000 
   End Function
End Module
' The example displays the following output:
'       Found: X = 275, Y = 395

명시적으로 필요한 시그니처가 있는 메서드를 정의 하는 대신 인스턴스화를 Predicate<T> 대리자와 대리자를 전달 합니다 Find 람다 식을 사용 하는 일반적인 것이 메서드를 합니다.Rather than explicitly defining a method with the necessary signature, instantiating a Predicate<T> delegate, and passing the delegate to the Find method, it is customary to use a lambda expression. 람다 식으로 사용 하 여 다음 예제는 이전 쿼리와 동일 합니다 match 인수입니다.The following example is identical to the previous one, except that it uses a lambda expression as the match argument.

using System;
using System.Drawing;

public class Example
{
    public static void Main()
    {
        // Create an array of five Point structures.
        Point[] points = { new Point(100, 200), 
            new Point(150, 250), new Point(250, 375), 
            new Point(275, 395), new Point(295, 450) };

        // Find the first Point structure for which X times Y 
        // is greater than 100000. 
        Point first = Array.Find(points, p => p.X * p.Y > 100000);

        // Display the first structure found.
        Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y);
    }
}
// The example displays the following output:
//       Found: X = 275, Y = 395
Imports System.Drawing

Public Module Example
   Public Sub Main()
      ' Create an array of five Point structures.
      Dim points() As Point = { new Point(100, 200), _
            new Point(150, 250), new Point(250, 375), _
            new Point(275, 395), new Point(295, 450) }

      ' Find the first Point structure for which X times Y 
      ' is greater than 100000. 
      Dim first As Point = Array.Find(points, 
                                      Function(p) p.X * p.Y > 100000)

      ' Display the first structure found.
      Console.WriteLine("Found: X = {0}, Y = {1}", _
            first.X, first.Y)
   End Sub
End Module
' The example displays the following output:
'       Found: X = 275, Y = 395

설명

합니다 Predicate<T> 메서드 또는 람다 식을 반환 하는 대리자가 true 대리자 또는 람다 식에 정의 된 조건과 일치 하는 개체에 전달 하는 경우.The Predicate<T> is a delegate to a method or a lambda expression that returns true if the object passed to it matches the conditions defined in the delegate or lambda expression. 요소의 array 개별적으로 전달 되는 Predicate<T>첫 번째 요소부터 마지막 요소까지 합니다.The elements of array are individually passed to the Predicate<T>, starting with the first element and ending with the last element. 일치 하는 경우 처리가 중지 됩니다.Processing is stopped when a match is found.

이 메서드는 O (n) 작업을 여기서 nLengtharray합니다.This method is an O(n) operation, where n is the Length of array.

적용 대상

추가 정보