您如何在C#中执行“内联函数”?我认为我不了解这个概念。他们喜欢匿名方法吗?像lambda函数一样?
注意 :答案几乎完全涉及内联函数的功能,即“用被调用者的主体替换函数调用站点的手动或编译器优化”。如果您对匿名(又名lambda)函数感兴趣,请参阅@jalf的答案,或者每个人都在谈论这个“ Lambda”?。
最后,在.NET 4.5中,CLR允许使用值暗示/建议1方法内联MethodImplOptions.AggressiveInlining。它也可以在Mono的后备箱中使用(今天提交)。
MethodImplOptions.AggressiveInlining
// 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的技术限制,其中考虑了内联或更普遍的限制(例如虚拟功能)。总体而言,是的,这是对编译器的提示,但我想这正是所要的。
The method should be inlined if possible.