在C#中,是Lambda Expressions对象吗?

时间:2009-06-25 14:16:17

标签: c# lambda

在C#中,是lambda表达式对象吗?如果是这样,他们是什么类型的对象?

4 个答案:

答案 0 :(得分:16)

Lambda表达式本身仅存在于源代码中。它们本身没有类型,这就是编译器始终坚持将它们转换为特定类型的原因。

这就是为什么这段代码无法编译的原因:

// No idea what type to convert to!
object x = y => y.Length;

但这样做:

Func<string, int> x = y => y.Length;

Lambda表达式始终转换为 委托类型表达式树类型。同样,匿名方法总是转换为委托类型。

答案 1 :(得分:12)

是的,lambda表达式转换为delegateexpression tree - 两者都是对象。

答案 2 :(得分:4)

Linq中的Lambda操作构建了所谓的表达式树。你可以读一下它here

答案 3 :(得分:0)

这是一个匿名函数,必须符合某种代理。 msdn 所以,实际上,它们是某种委托类型的实例。

相关问题