在 C# 中,Lambda 表达式是对象吗?
在 C# 中,lambda 表达式是对象吗? 如果是,它们是什么类型的物体?
In C#, are lambda expressions objects? If so, what sort of object are they?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Lambda 表达式本身仅存在于源代码中。 它们本身没有类型,这就是编译器总是坚持将它们转换为特定类型的原因。
这就是此代码无法编译的原因:
但是可以:
Lambda 表达式始终转换为委托类型或表达式树类型。 同样,匿名方法始终会转换为委托类型。
Lambda expressions themselves only exist in source code. They don't have a type themselves, which is why the compiler always insists they're convert to a specific type.
That's why this code doesn't compile:
But this does:
Lambda expressions are always converted to either a delegate type or an expression tree type. Similarly, anonymous methods are always converted to a delegate type.
是的,lambda 表达式会转换为
委托
或表达式树 - 两者都是对象。Yes, lambda expressions are converted to either a
delegate
or an expression tree - both of which are objects.Linq 中的 Lambda 操作构建所谓的表达式树。 您可以在此处阅读一些相关内容。
Lambda operations in Linq build what are called expression trees. You can read a bit about it here.
它是一个匿名函数,必须符合某种委托。
msdn
所以,事实上,它们是某种委托类型的实例。
It's an anonymous function that has to conform to some kind of delegate.
msdn
So, in fact, they're instances of some delegate type.