根据我的理解,我对Func delegate的含义解释如下,如有需要请指正。
Declaration : Func<int> dg ;
1。我可以将其解释为“委托(delegate) 指向返回一个的方法 整数?”。
Declaration : Func<int,int> delg1=r=>2*r;
*2。我可以将其解释为“‘r’是一个 lambda 表达式,它本身是 一个整数类型被评估为'2 * r'并返回一个int? .*
Comparison : Delegate and lambda expression
3。如果委托(delegate)和 lambda 都作为函数指针工作,有什么不同?
Comparison : Are the following two declarations equal?
decl 1 : Func<int,int> fn=(r)=>45*r;
decl 2 : Expression<Func<int,int>> ex = (r) => r * 10;
4。如果上述两种构造都用于相同的目的,那么它们有什么不同呢?
最佳答案
1) 是的,但更精确和准确的说法是“指代不带参数并返回整数的方法的委托(delegate)”。
2) 不,“r”不是 lambda 表达式。 “r”被使用了两次,第一次是声明 lambda 表达式的形式参数,第二次是作为该 lambda 表达式主体的一部分。但是“r”不是 lambda 表达式。 lambda 表达式是 "r=>2*r"
3) Lambda 和委托(delegate)是不同的东西。 lambda 是“做某事的函数”的抽象概念。委托(delegate)类型是事物类型的抽象概念,事物是接受和返回某些类型的方法。特定委托(delegate)是对此类方法的引用。 lambda 可以转换 为兼容的委托(delegate)类型,如果您这样做,在运行时您将获得一个委托(delegate)实例。但是 lambda 也可以转换为其他东西,比如表达式树。
4) 它们的目的不同。表达式树是一个对象,委托(delegate) lambda 中提到的计算。委托(delegate)是一个对象,它实际上执行 lambda 中提到的计算。
关于c# - ASP.NET 委托(delegate)和表达式 - 信息请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1591628/