代表,Lambdas,Action,Func,匿名函数

时间:2010-11-25 09:03:59

标签: c# lambda delegates anonymous-function

我只想验证我对以下内容的理解

  • 委托 - 方法签名
  • Lambdas - 匿名函数
  • 匿名函数 - 只是
  • 操作 - 不返回任何内容的匿名函数
  • Func - 返回内容的匿名函数
嗯......他们都做类似的事情,你如何定义&知道什么时候使用?

抱歉,我的解释不好

3 个答案:

答案 0 :(得分:9)

  • 委托 - 它不是方法签名。 It is a type which encapsulates a method。因此,委托声明应该具有与其想要封装的方法类似的签名。 When to use Delegate - whenever you want to pass a method to another function.有关详情,请参阅thisthis

  • Lambdas - 写一个匿名函数的简短表达方式。但还有更多。 lambda表达式也可以转换为表达式树。有关详情,请参阅this

  • 匿名函数 - 是..只是那个

  • 操作 - 它是一个委托,可以封装一个不返回任何内容的函数。因此,您应该将其视为a type that can encapsulate an action并在需要传递操作时使用它。

  • Func - 可以封装返回内容的函数的委托。但是你应该把它看作a type that can encapsulate a transformation并在想要传递转换时使用。

答案 1 :(得分:4)

ActionFunc只是Delegate的特例。委托本身是引用方法的东西,可用于调用它。

答案 2 :(得分:3)

不要试图看到C#+这些功能。另外,因为你的问题没有严格务实的答案。

从功能编程的角度出发,例如尝试学习F#以了解使用lambda的内容(实际上是函数语言中的所有内容),然后你会更好地理解事物。

它将打开你的思维,让你对命令式编程或C#等混合语言有不同的看法。