当我阅读 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/