【发布时间】:2015-10-31 15:31:46
【问题描述】:
下面的代码不会编译:
Func<Person, bool> theLambda = (p) => p.Year >= 1992;
foreach (Person pers in PersonList.FindAll(theLambda))
{
Console.WriteLine(pers.Name);
}
public class Person
{
public string Name { get; set; }
public int Year { get; set; }
public Person(string Name, int Year )
{
this.Name = Name; this.Year = Year;
}
}
但是,如果我直接用 lambda 替换变量“theLambda”,那么它就可以正常工作。这里发生了什么? (温柔点,我是新手)。非常感谢您!
(1) 我阅读了错误信息,但它对我没有任何意义。
(2) 是的,我可以通过使用 compile() 关键字使其与 Predicate 一起使用,但这不是这里的问题。
编辑:为什么会有人对此投反对票?这个问题并没有那么糟糕,因为问题域确实不具有逻辑性质。真的是人。
【问题讨论】:
-
错误信息是什么?
-
可能是因为您使用的类型不正确。请改用
Predicate<Person>。
标签: c# lambda expression predicate findall