1

我了解如何使用委托,并且可以使用 lambda 表达式来使用谓词。我已经到了想要实现一个使用谓词作为参数的方法并且无法弄清楚如何引用谓词以在我的集合中查找匹配项的地步:

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 回答