一尘不染

C#中的内联函数?

c#

您如何在C#中执行“内联函数”?我认为我不了解这个概念。他们喜欢匿名方法吗?像lambda函数一样?

注意
:答案几乎完全涉及内联函数的功能,即“用被调用者的主体替换函数调用站点的手动或编译器优化”。如果您对匿名(又名lambda)函数感兴趣,请参阅@jalf的答案,或者每个人都在谈论这个“
Lambda”?


阅读 584

收藏
2020-05-19

共1个答案

一尘不染

最后,在.NET
4.5中,CLR允许使用值暗示/建议1方法内联MethodImplOptions.AggressiveInlining。它也可以在Mono的后备箱中使用(今天提交)。

// The full attribute usage is in mscorlib.dll,
// so should not need to include extra references
using System.Runtime.CompilerServices;

...

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void MyMethod(...)

1 。以前在这里使用“力”。由于有一些反对意见,我将尝试澄清这个词。如评论和文档中所述,The method should be inlined if possible.特别是考虑到Mono(已公开),存在一些特定于Mono的技术限制,其中考虑了内联或更普遍的限制(例如虚拟功能)。总体而言,是的,这是对编译器的提示,但我想这正是所要的。

2020-05-19