C#委托(delegate)编译器优化

标签 c# optimization delegates jit anonymous

我已经开始在 C# 中大量使用匿名委托(delegate),并且我开始怀疑编译器或运行时从实际运行的代码中删除它们的效率如何,而我在任何地方都没有看到这个细节?

内联它们并折叠可以静态推断的递归使用是否足够聪明?

最佳答案

不,C# 编译器不会将 lambda 表达式优化为内联代码。匿名委托(delegate)和 lambda 表达式将始终生成相应的委托(delegate)或表达式树。这在 C# 语言规范的第 6.5 节中有所介绍

An anonymous-method-expression or lambda-expression is classified as an anonymous function (§7.14). The expression does not have a type but can be implicitly converted to a compatible delegate type or expression tree type



在某些情况下,lambda 将被缓存并且不会重新创建以供将来使用。但它不会被内联。

关于C#委托(delegate)编译器优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2958433/

相关文章:

c# - 如何将 bool 值一般格式化为是/否字符串?

list - Racket 中高效的随机数列表总和

c - 将多个(离散)操作折叠为一个(连续)操作

c++ - 有这样的C++优化吗?

c# - 实例化委托(delegate)的各种方式之间的区别(Func<T, T>)?

c# - 为什么未使用的事件参数需要分配?

c# - 是否可以使用通用的 BehaviorExtensionElement?

c# - LINQ,查询上的大过滤器

c# - 在 C#/.Net 中以编程方式模拟浏览器

ios - UITextFieldDelegate textFieldShouldReturn 调用者