c# - F# 是否真的允许指定要在代码中内联的函数?

标签 c# performance f# inline

当我阅读 F# 的东西时,他们在谈论内联方法,但我认为 .NET 没有向程序员公开此功能。如果它暴露了,那么它必须在 IL 中?那么 C# 也可以利用它吗?

只是想知道这个东西是否与 C++ 内联功能相同。

最佳答案

与 C++ 内联相比,它实际上更复杂,因为 F# 工作在 .NET 之上,.NET 以 IL 作为中间语言,所以实际上有两层可以进行一些内联​​:

  • 在 F# -> IL 级别 - inline 关键字允许您指定在生成 .NET IL 代码时应内联 F# 函数。在这种情况下,函数的 IL 指令将代替表示方法调用的 IL 指令。

  • 在 IL -> 程序集级别 - 这完全由 JITter(.NET 即时编译器)控制,它将 IL(中间语言)编译为实际的可执行程序集代码。这是完全自动完成的,因此您不能指定应在此级别内联某些内容。然而,JITter 也内联了一些简单的调用(例如对属性 getter 和 setter 的调用)。

关于c# - F# 是否真的允许指定要在代码中内联的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2233592/

相关文章:

f# 邮箱处理器 - 无需等待发送即可回复

c# - C# default 关键字在 F# 中的等价物是什么?

F# 基础知识 : Folding 2 lists together into a string

c# - 在 C# 中使用 ADO.NET 格式化内联 sql 的最佳实践是什么

c# - 使用OpenALPR C#包装器

algorithm - Every-case 时间复杂度的概念

algorithm - 使用 A-star 优化 N-Puzzle 上的重复节点搜索(封闭列表、开放列表)

c# - 如何传递要包含在 URL 中的参数?

c# - 在 Aspx 中分配 C# Lambda Func

Python udp 性能