Expression <Func <T,bool >>声明是什么意思?

Bre*_*dan 12 c# lambda expression

有人可以用一种方式解释下面的声明,它表达了表达式的含义以及如何调用它?

void Delete<T>(Expression<Func<T, bool>> expression) where T : class, new();

我把它读作:T通过传入一个lambda表达式来删除一个类型的对象,该表达式的参数是一个T返回一个类型的对象bool.

另外,还可以代替 Func<T, bool> expressionPredicate<T> expression

Eri*_*ert 19

这个方法可能是集合类型的成员,是吗?

"谓词"是对问题"是"还是"否"的任何设备"这个东西是该集合的成员吗?" 因此,对于集合"整数甚至正整数"的谓词将是x=> x > 0 && x % 2 == 0.

此方法可能具有"从集合中删除集合中由谓词标识的集合中的所有成员"的语义.

谓词以表达式树的形式传递给方法,表达式树是一种以可在运行时分析并转换的方式传递谓词结构的方法.它通常用于"集合"实际上是某个地方的数据库的情况,并且删除请求需要以数据库的查询语言转换为查询并通过网络发送.


Jon*_*eet 9

第一种是接受表达式树的方法(不一定是从lambda表达式树创建的).表达式树表示接受a T并返回a 的表达式bool.T被约束为具有无参数构造函数的引用类型.

至于语义含义 - 这取决于文档/实现.

区分lambda表达式和表达式树本身很重要,lambda表达式是创建表达式树的一种方式.

至于它是否可以使用Predicate<T>- 也许.这取决于实现对它的作用.它们代表相同的委托签名,当然 - 但是你不能轻易地在两种类型的表达式树之间进行转换.