可以内联静态 class 扩展吗?
Can a static class extension be inlined?
我倾向于(回到 C++ 时代)向小方法添加内联提示,例如:
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Add(this IProject @this, IComponent component)
{
@this.Components.Add(component);
}
我想知道是否可以首先内联静态 class 扩展方法?
可以内联静态方法。 See here 获取有关如何检查方法是否被内联的信息。扩展方法与普通静态方法没有区别;在 IL 中,它们只是用 System.Runtime.CompilerServices.ExtensionAttribute
修饰,因此 JIT 将对它们进行相同的处理。
我倾向于(回到 C++ 时代)向小方法添加内联提示,例如:
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Add(this IProject @this, IComponent component)
{
@this.Components.Add(component);
}
我想知道是否可以首先内联静态 class 扩展方法?
可以内联静态方法。 See here 获取有关如何检查方法是否被内联的信息。扩展方法与普通静态方法没有区别;在 IL 中,它们只是用 System.Runtime.CompilerServices.ExtensionAttribute
修饰,因此 JIT 将对它们进行相同的处理。