关于MethodImpl Attribute使用的一些问题

Some questions about the usage of MethodImpl Attribute

MethodImplOptions 的 MSDN 参考是这些:

MethodImplOptions Enumeration


我想知道,首先,我应该在什么情况下使用MethodImpl(MethodImplOptions.Unmanaged),最重要的是,这个(如果有的话)的beneffits/optimizations是什么?

我假设我在调用WinAPI函数或第三方库中的函数时应该使用它C/C++,那么,这个代码示例是对的吗?:

<MethodImpl(MethodImplOptions.Unmanaged)>
Public Shared Sub MyMethod()

    ' Call to
    SafeOrUnsafeNativeMethodsClass.RanodmWinAPIFunction()

End Sub

其次,我想了解我应该为在 Class 中声明为共享的方法使用什么值,这些方法可以从代码的任何部分调用。

一个例子:

' Sealed class.
Public NotInheritable Class class1

    ' No instanceable class.    
    Private Sub New()
    End Sub

    Public Shared Function MyFunc(ByVal parameter1 As String) As Boolean

        Return A Boolean Value

    End Function

End Class

我应该在 MethodImpl 属性中为该方法设置什么 MethodImplOptions EnumerationI 值?

这是一个演示内联导致性能不佳的用户测试:

https://softwareengineering.stackexchange.com/questions/245802/is-there-a-downside-to-using-aggressiveinlining-on-simple-properties

但是,我不确定是否应该指定内联,是否应该设置 NoOptimization,或者在共享方法的情况下什么值可以获得最佳性能。

MSDN:

Unmanaged The method is implemented in unmanaged code.

这意味着方法体在非托管代码中,而不是它会被编译成它。此标志用于 C++/CLI 程序集。

我会说不要使用此属性,JIT 应该在需要时自行处理内联(如您发布的文章中所写)。