谁能解释一下函数;对我来说很简单
本文关键字:对我来说 简单 能解释 函数 一下 | 更新日期: 2023-09-27 18:17:52
我正在看的代码包含:
public virtual ICollection<T> GetPk(string pk)
{
Expression<Func<T, bool>> predicate = c => c.PartitionKey == pk;
return this.GetAll(predicate);
}
谁能解释一下<Func<T, bool>>
的语法?
简单地说,Func<T, bool>
是匿名方法签名。第一种类型T
为输入参数类型,第二种类型为返回类型。当您考虑您的表示时,这更像是一个方法:
bool AnonMethod(T arg0)
{
return arg0.PartitionKey == pk;
}
最好的解释之一是MSDN
您可以使用此委托来表示可以作为参数传递的方法,而无需显式声明自定义委托。封装的方法必须与此委托定义的方法签名相对应。这意味着封装的方法必须有一个按值传递给它的参数,并且它必须返回一个值。
对于示例中的参数,T是输入参数的类型,bool是指定方法的返回类型。
Func<T, bool>
表示一个函数,它接受一个T
类型的对象并返回一个bool
。它通常被称为"谓词",用于验证对象的条件。
Expression<Func<T, bool>>
表示该函数的抽象语法树,即其语法结构。它可以用于分析函数的代码,用于各种目的,例如将其转换为SQL以对数据库执行。
背景;在Func<T, TResult>
(以及这个家族的其他成员)成为框架的一部分之前,您要么必须显式地定义委托,要么使用匿名方法。
Func
和Action
是作为lambda表达式添加到语言中的一部分添加的。它们是框架定义的委托,lambda表达式作为其类型输入,但作为开发人员,您也可以使用它们来代替您自己的自定义委托定义。
你可以在这里得到一个很好的历史;
http://blogs.msdn.com/b/ericwhite/archive/2006/10/03/lambda-expressions.aspx我总是觉得MSDN值得先检查一下,
http://msdn.microsoft.com/en-us/library/bb549151.aspx被马希普打了,没有看到帖子弹出框。
基本上,你正在声明一个与签名匹配的方法,然后可以将其传递给调用以获取数据。
一开始会让人感到困惑,但Func<T, bool>
描述了一个返回bool类型并接受t类型参数的函数
在这种情况下,T是一个具有PartitionKey
属性的对象,并且这个GetPk
方法使用Func<T, bool>
来匹配实例对象中具有PartitionKey
且匹配字符串pk
的所有T项。
这是额外的语法,因此您可以知道函数的输入和输出。
Func<T, bool>
意味着:函数有1个输入 T
和1个输出即bool
。
这是函数