内联是什么?
它是干什么用的?
你能用C#内联一些东西吗?
这是什么
在C和C++方面,您使用inline关键字告诉编译器调用例程而不会将参数压入堆栈.而函数将其机器代码插入到调用它的函数中.在某些情况下,这可以显着提高性能.
危险
随着内联函数的大小增加,使用"内联"的速度优势显着降低.过度使用实际上会导致程序运行速度变慢.内联一个非常小的访问器函数通常会减少代码大小,而内联一个非常大的函数可以大大增加代码大小.
在C#中内联
在C#内联发生在JIT级别,JIT编译器在其中做出决定.目前C#中没有可以明确执行此操作的机制.如果您想知道JIT编译器正在做什么,那么您可以System.Reflection.MethodBase.GetCurrentMethod().Name
在运行时调用:如果方法是内联的,它将返回调用者的名称.
在C#中,您不能强制方法内联,但您可以强制方法不要.如果您确实需要访问特定的callstack,并且需要删除内联,则可以使用:MethodImplAttribute
with MethodImplOptions.NoInlining
.此外,如果一个方法被声明为虚拟,那么它也不会被JIT内联.这背后的原因是呼叫的最终目标是未知的.
更多关于内联