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

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

 

公開日: 2016年10月

指定された配列に、指定された述語によって定義された条件と一致する要素が含まれているかどうかを判断します。

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

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

パラメーター

array
Type: T[]

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

match
Type: System.Predicate<T>

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

戻り値

Type: System.Boolean

指定された述語によって定義された条件と一致する 1 つ以上の要素が array に存在する場合は、true。それ以外の場合は false

型パラメーター

T

配列要素の型。

Exception Condition
ArgumentNullException

arraynull です。

-または-

matchnull です。

Predicate<T> を返すメソッドにデリゲート true デリゲートで定義された条件と一致する場合は、オブジェクトに渡されます。 要素 array に個別に渡される、 Predicate<T>, 、一致が見つかったときに処理が停止しているとします。

System_CAPS_noteメモ

C# と Visual Basic での必要はありませんを作成する、 Predicate<T> 明示的に委任します。 これらの言語では、コンテキストから適切なデリゲートを推論し、自動的に作成します。

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

次の例についての一致条件を指定する、 Exists<T>メソッド usinglambda 式惑星が特定の文字で始まるかどうか、または指定した配列に地球を検出するかどうかを確認します。

using System;

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] planets = { "Mercury", "Venus",
                "Earth", "Mars", "Jupiter",
                "Saturn", "Uranus", "Neptune" };

            Console.WriteLine("One or more planets begin with 'M': {0}",
                Array.Exists(planets, element => element.StartsWith("M")));

            Console.WriteLine("One or more planets begin with 'T': {0}",
                Array.Exists(planets, element => element.StartsWith("T")));

            Console.WriteLine("Is Pluto one of the planets? {0}",
                Array.Exists(planets, element => element == "Pluto"));
        }
    }
}
// The example displays the following output:
//       One or more planets begin with 'M': True
//       One or more planets begin with 'T': False
//       Is Pluto one of the planets? False

次の例では、 Exists<T> を文字列配列の任意の名前が指定した文字で始まるかどうかを示す方法。 インスタンス化、 StringSearcher クラス コンス トラクターを検索する文字列を渡すことによってオブジェクトです。 StringSearcher.StartsWith メソッドと同じシグネチャを持つ、 Predicate<T> を委任します。 ときに、Exists<T> メソッドが呼び出されると、返されるまでに、配列の各メンバーが、デリゲートに渡された true または配列内のすべての要素を反復処理します。

using System;

public class Example
{
   public static void Main()
   {
      String[] names = { "Adam", "Adel", "Bridgette", "Carla",
                         "Charles", "Daniel", "Elaine", "Frances",
                         "George", "Gillian", "Henry", "Irving",
                         "James", "Janae", "Lawrence", "Miguel",
                         "Nicole", "Oliver", "Paula", "Robert",
                         "Stephen", "Thomas", "Vanessa",
                         "Veronica", "Wilberforce" };
      Char[] charsToFind = { 'A', 'K', 'W', 'Z' };

      foreach (var charToFind in charsToFind)
         Console.WriteLine("One or more names begin with '{0}': {1}",
                           charToFind,
                           Array.Exists(names, (new StringSearcher(charToFind)).StartsWith));
   }
}

public class StringSearcher
{
   Char firstChar;

   public StringSearcher(Char firstChar)
   {
      this.firstChar = Char.ToUpper(firstChar);
   }

   public bool StartsWith(String s)
   {
      if (String.IsNullOrEmpty(s)) return false;

      if(s.Substring(0, 1).ToUpper() == firstChar.ToString())
         return true;
      else
         return false;
   }
}
// The example displays the following output:
//       One or more names begin with 'A': True
//       One or more names begin with 'K': False
//       One or more names begin with 'W': True
//       One or more names begin with 'Z': False

ラムダ式を使用しても代わりできます、デリゲートのシグネチャを持つ対応するメソッドを明示的に定義します。 次の例が置き換えられます、 StringSearcherクラスとその StartsWith ラムダ式を持つメソッドです。

using System;

public class Example
{
   public static void Main()
   {
      String[] names = { "Adam", "Adel", "Bridgette", "Carla",
                         "Charles", "Daniel", "Elaine", "Frances",
                         "George", "Gillian", "Henry", "Irving",
                         "James", "Janae", "Lawrence", "Miguel",
                         "Nicole", "Oliver", "Paula", "Robert",
                         "Stephen", "Thomas", "Vanessa",
                         "Veronica", "Wilberforce" };
      Char[] charsToFind = { 'A', 'K', 'W', 'Z' };

      foreach (var charToFind in charsToFind)
         Console.WriteLine("One or more names begin with '{0}': {1}",
                           charToFind,
                           Array.Exists(names,
                                        s => { if (String.IsNullOrEmpty(s))
                                                  return false;

                                               if (s.Substring(0, 1).ToUpper() == charToFind.ToString())
                                                  return true;
                                               else
                                                  return false;
                                             } ));
   }
}
// The example displays the following output:
//       One or more names begin with 'A': True
//       One or more names begin with 'K': False
//       One or more names begin with 'W': True
//       One or more names begin with 'Z': False

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