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

Bri*_*haw 5 c# lambda

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

Jon*_*eet 16

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

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

// No idea what type to convert to!
object x = y => y.Length;
Run Code Online (Sandbox Code Playgroud)

但这样做:

Func<string, int> x = y => y.Length;
Run Code Online (Sandbox Code Playgroud)

Lambda表达式将被转换成任一委托类型表达式树类型.同样,匿名方法始终转换为委托类型.


And*_*are 12

是的,lambda表达式转换为a delegate表达式树 - 两者都是对象.