1

デリゲートの使用方法を理解しており、ラムダ式を使用して述語を使用しても問題ありません。述語を引数として使用するメソッドを実装したいのですが、コレクション内で一致するものを見つけるために述語を参照する方法がわかりません。

private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match)
{
    foreach (T item in collection)
    {
        //So how do I reference match to return the matching item?
    }
    return default(T);
}

次に、次のようなものを使用してこれを参照します。

ICollection<MyTestClass> receivedList = //Some list I've received from somewhere else
MyTestClass UsefulItem = FindInCollection<MyTestClass>(receivedList, i => i.SomeField = "TheMatchingData");

述語の実装に関する説明や参考資料を教えていただければ幸いです。そこにあるドキュメントはすべて、述語を渡すことに関連しているようです(これは私がうまく行うことができます)、実際にはそれらを使用する機能を実装していません...

ありがとう

4

1 に答える 1

7
private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match)
{
    foreach (T item in collection)
    {
        if (match(item))
            return item;
    }
    return default(T);
}

他のデリゲートと同じように述語を使用します。これは基本的に、タイプTの任意の引数を使用して呼び出すことができるメソッドであり、trueを返します。

于 2009-08-18T23:04:05.217 に答える