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表达式将被转换成任一委托类型或表达式树类型.同样,匿名方法始终转换为委托类型.