c# - ASP.NET 委托(delegate)和表达式 - 信息请求

标签 c# delegates anonymous-methods

根据我的理解,我对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/

相关文章:

c# - 调用类型的空默认构造函数

c# - 针对 EF Core 和 SQL Server 数据库编写集成测试

c# - 在 C# 构造函数中处理可选委托(delegate)的最佳方法是什么?

ios - Swift 3 流委托(delegate)事件处理程序错误

multithreading - 我可以将 Delphi TThread.Synchronize() 本地移动到 VCL 表单以从主线程或工作线程调用吗?

C#,从后台线程调用匿名方法(Action<>)

c# - 为什么成员字段不能有字段初始值设定项调用成员函数?

c# - 如何在代码隐藏中更改 ItemsPanelTemplate?

objective-c - 在 Cocoa 中子类化时重写委托(delegate)方法

java - 匿名方法使用泛型值作为参数