在 C# 中,Lambda 表达式是对象吗?

发布于 2024-07-25 16:05:09 字数 46 浏览 3 评论 0原文

在 C# 中,lambda 表达式是对象吗? 如果是,它们是什么类型的物体?

In C#, are lambda expressions objects? If so, what sort of object are they?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夜夜流光相皎洁 2024-08-01 16:05:09

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

这就是此代码无法编译的原因:

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

但是可以:

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

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:

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

But this does:

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

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.

最偏执的依靠 2024-08-01 16:05:09

是的,lambda 表达式会转换为 委托表达式树 - 两者都是对象。

Yes, lambda expressions are converted to either a delegate or an expression tree - both of which are objects.

dawn曙光 2024-08-01 16:05:09

Linq 中的 Lambda 操作构建所谓的表达式树。 您可以在此处阅读一些相关内容。

Lambda operations in Linq build what are called expression trees. You can read a bit about it here.

叹梦 2024-08-01 16:05:09

它是一个匿名函数,必须符合某种委托。
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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文