English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Predicateデリゲート

PredicateはFuncやActionが表すようなデリゲートです。一連の条件を定義し、指定されたオブジェクトがこれらの条件に一致するかどうかを決定するメソッドを表します。このデリゲートはArrayやListクラスのいくつかのメソッドによって使用され、集合内の要素を検索するために使用されます。Predicateデリゲートメソッドは入力パラメータを1つ取り、布尔値trueまたはfalseを返す必要があります。

Predicateデリゲートの定義

以下のようにSystemで定義された名前空間にPredicateデリゲートがあります:

Predicateのシグネチャ:

public delegate bool Predicate<in T>(T obj);

他のデリゲート型と同様に、Predicateデリゲートも任何メソッド、匿名メソッド、またはlambda表現式と一緒に使用できます。

static bool IsUpperCase(string str)
{
    return str.Equals(str.ToUpper());
}
static void Main(string[] args)
{
    Predicate<string> isUpper = IsUpperCase;
    bool result = isUpper("hello world!!");
    Console.WriteLine(result);
}
出力:
false

Predicateデリゲートと匿名メソッド

匿名メソッドもPredicateデリゲート型に割り当てることができます。以下のように。

static void Main(string[] args)
{
    Predicate<string> isUpper = delegate(string s) { return s.Equals(s.ToUpper());};
    bool result = isUpper("hello world!!");
}

PredicateデリゲートとLambda表現式

lambda表現式もPredicateデリゲート型に割り当てることができます。以下のように。

static void Main(string[] args)
{
    Predicate<string> isUpper = s => s.Equals(s.ToUpper());
    bool result = isUpper("hello world!!");
}

predicateデリゲートの使用方法

  • predicateデリゲートはbool型の返り値を持つジェネリクスデリゲートです。

  • Predicate<int>デリゲートはintの引数を取り、bool値を返すデリゲートです。

  • predicateデリゲートは1つの引数しか持たず、常にbool値を返します。

覚えておくべきポイント

  1. predicateデリゲートは入力引数1つと布尔値の返り値を持っています。

  2. 匿名メソッドとLambda式をpredicateデリゲートに割り当てることができます。