İngilizce dilinde oku

Aracılığıyla paylaş


Array.Find<T>(T[], Predicate<T>) Yöntem

Tanım

Belirtilen koşul tarafından tanımlanan koşullarla eşleşen bir öğeyi arar ve tüm Arrayiçindeki ilk oluşumu döndürür.

public static T Find<T>(T[] array, Predicate<T> match);
public static T? Find<T>(T[] array, Predicate<T> match);

Tür Parametreleri

T

Dizinin öğelerinin türü.

Parametreler

array
T[]

Aranacak tek boyutlu, sıfır tabanlı dizi.

match
Predicate<T>

Aranacak öğenin koşullarını tanımlayan koşul.

Döndürülenler

T

Bulunursa, belirtilen koşul tarafından tanımlanan koşullarla eşleşen ilk öğe; aksi takdirde, türü için varsayılan değer T.

Özel durumlar

array null.

-veya-

match null.

Örnekler

Aşağıdaki örnek, Point yapıların dizisini aramak için Find genel yöntemine sahip bir Predicate<T> temsilcisi kullanır. Temsilcinin temsil ettiği ProductGT10yöntemi, X ve Y alanlarının ürünü 100.000'den büyükse true döndürür. Find yöntemi, dizinin her öğesi için temsilciyi çağırır ve test koşulunu karşılayan ilk noktayı döndürür.

Not

Visual Basic, C# ve F# kullanıcılarının temsilciyi açıkça oluşturması veya genel yöntemin tür bağımsız değişkenini belirtmesi gerekmez. Derleyiciler, sağladığınız yöntem bağımsız değişkenlerinden gerekli türleri belirler.

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

Gerekli imzaya sahip bir yöntemi açıkça tanımlamak, bir Predicate<T> temsilcisi örneği oluşturmak ve temsilciyi Find yöntemine geçirmek yerine, lambda ifadesi kullanmak özeldir. Aşağıdaki örnek, match bağımsız değişkeni olarak lambda ifadesi kullanması dışında öncekiyle aynıdır.

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

Açıklamalar

Predicate<T>, geçirilen nesne temsilci veya lambda ifadesinde tanımlanan koşullarla eşleşiyorsa true döndüren bir yöntem veya lambda ifadesinin temsilcisidir. array öğeleri, ilk öğeden başlayıp son öğeyle biten tek tek Predicate<T>geçirilir. Eşleşme bulunduğunda işlem durdurulur.

Bu yöntem, narrayLength olduğu bir O(n) işlemidir.

F# dilinde bunun yerine Array.find işlevi kullanılabilir.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.