如何将谓词作为参数C#传递

dav*_*ove 4 c# delegates predicate

如果没有传递谓词,如何将谓词传递给方法,又如何使谓词起作用?我以为也许是这样,但这似乎并不正确。

private bool NoFilter() { return true; }

private List<thing> GetItems(Predicate<thing> filter = new Predicate<thing>(NoFilter))
{
    return rawList.Where(filter).ToList();
}
Run Code Online (Sandbox Code Playgroud)

Wae*_*her 5

private List<thing> GetItems(Func<thing, bool> filter = null)
{
    return rawList.Where(filter ?? (s => true)).ToList();
}
Run Code Online (Sandbox Code Playgroud)

在此表达式中s => true是回退过滤器,如果参数filter为null ,则会对其进行评估。它只获取列表的每个条目(如s)并返回true