如何在C#中强制内联函数?

Chr*_*ris 26 .net c#

可能重复:
C#中的内联函数?

在c ++中我们可以强制函数内联.

在c#中这也是可能的吗?有时,当方法很小时,它会自动内联.但是有可能强制在c#/ .Net中内联函数吗?

Jon*_*eet 64

有点.您可以直接打开.它从未在IL中内联 - 它只由JIT完成.

您可以明确强制方法使用内联MethodImplAttribute

[MethodImpl(MethodImplOptions.NoInlining)]
public void Foo() { ... }
Run Code Online (Sandbox Code Playgroud)

从.NET 4.5开始,您还可以对"请求"内联进行排序:

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Foo() { ... }
Run Code Online (Sandbox Code Playgroud)

......但你不能强迫它.(在.NET 4.5之前,该枚举值不存在.例如,请参阅.NET 4文档.)

  • 很好,不知道新的枚举值.这在我的一些高性能代码中可能很有用. (4认同)
  • @ThomasFlinkow我会想到如果你请求一个强有力的内联,它将无法编译或产生错误的期望结果,并且开发人员将决定何时何时不强制它. (2认同)