我能够使用findAll和它的谓词...但我想知道使它工作的机制。
List<BradCollection> b = myList.FindAll(SearchForMe);
List<BradCollection> SearchForMe(string str)
{
if (str.Contains("brad"))
return true;
else
return false;
}
SearchForMe中的“str”参数在哪里获得?
答案 0 :(得分:1)
我不确定你在问什么;或许看一下FindAll的简化实现会有所帮助。这不是FindAll实际实现的方式,但它足够接近以了解正在发生的事情:
public delegate bool Predicate<A>(A arg);
...
public List<T> FindAll(Predicate<T> predicate)
{
var result = new List<T>();
foreach (T item in this)
if (predicate(item))
result.Add(item);
return result;
}
这会回答你的问题吗?
答案 1 :(得分:0)
它是从myList
获得的,它可能实现IList<string>
,它继承自IEnumerable<string>
。它枚举myList
中的每个项目,然后传递泛型参数以执行谓词。
如果你看,<T>
上有Predicate
个通用参数。