この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Array.FindAll<T> メソッド (T[], Predicate<T>)

 

公開日: 2016年10月

指定された述語によって定義された条件と一致するすべての要素を取得します。

名前空間:   System
アセンブリ:  mscorlib (mscorlib.dll 内)

public static T[] FindAll<T>(
	T[] array,
	Predicate<T> match
)

パラメーター

array
Type: T[]

検索する 1 次元の Array。インデックス番号は 0 から始まります。

match
Type: System.Predicate<T>

検索する要素の条件を定義する Predicate<T>

戻り値

Type: T[]

指定した述語によって定義される条件に一致する要素が見つかった場合は、そのすべての要素を格納する Array。それ以外の場合は、空の Array

型パラメーター

T

配列要素の型。

Exception Condition
ArgumentNullException

arraynull です。

-または-

matchnull です。

Predicate<T>を返すメソッドをデリゲートtrueデリゲートで定義された条件と一致する場合は、オブジェクトに渡されます。 要素arrayに個別に渡される、Predicate<T>条件に一致する要素が返される配列に保存されます。

このメソッドは、O (n) 操作では、ここでnは、Lengtharrayします。

次の例では、範囲は 0 ~ 1,000 値を持つ 50 個のランダムな数値の配列を作成します。 呼び出して、 FindAll<T> 600 に 300 の値の範囲を返すラムダ式を持つメソッドです。 ラムダ式のという名前のパラメーターが渡されることに注意してくださいxです。 渡される個々 の配列のメンバーを表すこの、Predicate<T>です。 またを注意してください。 ローカルlBounduBound変数は、ラムダ式内でアクセス可能です。

using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      // Get an array of n random integers.
      int[] values = GetArray(50, 0, 1000);
      int lBound = 300;
      int uBound = 600;
      int[] matchedItems = Array.FindAll(values, x =>  
                                       x >= lBound && x <= uBound);  
      for (int ctr = 0; ctr < matchedItems.Length; ctr++) {
         Console.Write("{0}  ", matchedItems[ctr]);
         if ((ctr + 1) % 12 == 0)
            Console.WriteLine();
      }
   }

   private static int[] GetArray(int n, int lower, int upper)
   {
      Random rnd = new Random();
      List<int> list = new List<int>();
      for (int ctr = 1; ctr <= n; ctr++)
         list.Add(rnd.Next(lower, upper + 1));

      return list.ToArray();
   }
}
// The example displays output similar to the following:
//       542  398  356  351  348  301  562  599  575  400  569  306
//       535  416  393  385

次のコード例を示しています、 Find<T>FindLast<T>、およびFindAll<T>ジェネリック メソッドです。 "Saurus"で終わる (位置 1 から 5 など) のうちの 2 台の 8 恐竜の名前を含む文字列の配列が作成されます。 コード例でも定義という名前の検索述語メソッドEndsWithSaurus、文字列パラメーターを受け入れるし、ブール値を返しますが、入力文字列では"かどうかを示すを値です。

Find<T>ジェネリック メソッドは、各要素を順番に渡して、先頭から、配列を通過する時間、EndsWithSaurusメソッドです。 検索を停止するときに、EndsWithSaurusメソッドを返します。true要素"Amargasaurus"です。

System_CAPS_noteメモ

C# および Visual Basic の場合では作成に必要なPredicate<string>委任 (Predicate(Of String) Visual Basic の) 明示的にします。 これらの言語では、コンテキストから適切なデリゲートを推論し、自動的に作成します。

FindLast<T>ジェネリック メソッドは、配列の末尾から旧バージョンとの検索に使用します。 "Dilophosaurus"5 番目の位置にある要素を検索します。 FindAll<T>で"終了するすべての要素を含む配列を返すジェネリック メソッドを使用します。 要素が表示されます。

このコード例も示します、Exists<T>TrueForAll<T>ジェネリック メソッドです。

using System;

public class DinoDiscoverySet
{
    public static void Main()
    {
        string[] dinosaurs =
        {
            "Compsognathus", "Amargasaurus", "Oviraptor",
            "Velociraptor",  "Deinonychus",  "Dilophosaurus",
            "Gallimimus",    "Triceratops"
        };

        DinoDiscoverySet GoMesozoic = new DinoDiscoverySet(dinosaurs);

        GoMesozoic.DiscoverAll();
        GoMesozoic.DiscoverByEnding("saurus");
    }

    private string[] dinosaurs;

    public DinoDiscoverySet(string[] items)
    {
        dinosaurs = items;
    }

    public void DiscoverAll()
    {
        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }
    }

    public void DiscoverByEnding(string Ending)
    {
        Predicate<string> dinoType;

        switch (Ending.ToLower())
        {
            case "raptor":
                dinoType = EndsWithRaptor;
                break;
            case "tops":
                dinoType = EndsWithTops;
                break;
            case "saurus":
            default:
                dinoType = EndsWithSaurus;
                break;
        }
        Console.WriteLine(
            "\nArray.Exists(dinosaurs, \"{0}\"): {1}",
            Ending,
            Array.Exists(dinosaurs, dinoType));

        Console.WriteLine(
            "\nArray.TrueForAll(dinosaurs, \"{0}\"): {1}",
            Ending,
            Array.TrueForAll(dinosaurs, dinoType));

        Console.WriteLine(
            "\nArray.Find(dinosaurs, \"{0}\"): {1}",
            Ending,
            Array.Find(dinosaurs, dinoType));

        Console.WriteLine(
            "\nArray.FindLast(dinosaurs, \"{0}\"): {1}",
            Ending,
            Array.FindLast(dinosaurs, dinoType));

        Console.WriteLine(
            "\nArray.FindAll(dinosaurs, \"{0}\"):", Ending);

        string[] subArray =
            Array.FindAll(dinosaurs, dinoType);

        foreach(string dinosaur in subArray)
        {
            Console.WriteLine(dinosaur);
        }
    }

    // Search predicate returns true if a string ends in "saurus".
    private bool EndsWithSaurus(string s)
    {
        if ((s.Length > 5) &&
            (s.Substring(s.Length - 6).ToLower() == "saurus"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    // Search predicate returns true if a string ends in "raptor".
    private bool EndsWithRaptor(String s)
    {
        if ((s.Length > 5) &&
            (s.Substring(s.Length - 6).ToLower() == "raptor"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    // Search predicate returns true if a string ends in "tops".
    private bool EndsWithTops(String s)
    {
        if ((s.Length > 3) &&
            (s.Substring(s.Length - 4).ToLower() == "tops"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

Array.Exists(dinosaurs, "saurus"): True

Array.TrueForAll(dinosaurs, "saurus"): False

Array.Find(dinosaurs, "saurus"): Amargasaurus

Array.FindLast(dinosaurs, "saurus"): Dilophosaurus

Array.FindAll(dinosaurs, "saurus"):
Amargasaurus
Dilophosaurus
*/

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
2.0 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Windows Phone Silverlight
8.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: