Predicate 是一个委托,它接受一个参数并返回一个布尔值。
我们可以通过以下方式做同样的事情
1)使用内联 Lambda 表达式
RemoveAll(p=> p.x > 2);
2)使用匿名函数
RemoveAll(delegate(myObject obj){
return obj.x >=10;
})
3)使用谓词委托
Predicate<myObject> matches = new Predicate<myObject>(IsEmployeeIsValid);
RemoveAll(matches);
Predicate<Foo> matches = delegate(Foo o){ return o.X >= 20; });
RemoveAll(matches);
3)显式声明委托并指向函数
public delegate bool IsInValidEmployee (Employee emp);
IsInValidEmployee invalidEmployeeDelegate = new IsInValidEmployee(IsEmployeeInValid);
myObjects.RemoveAll(myObject=>invalidEmployeeDelegate(myObject);
// 实际函数
public static bool IsEmployeeInValid(Employee emp)
{
if (emp.Id > 0 )
return true;
else
return false;
}