MethodImplOptions
的MSDN参考是:
首先,我想了解一下我应该使用哪种情况MethodImpl(MethodImplOptions.Unmanaged)
以及最重要的事情,这有什么好处(如果有的话)?
我认为我应该在调用WinAPI函数或第三方C / C ++库中的函数时使用它,那么,这个代码示例是对的吗?:
<MethodImpl(MethodImplOptions.Unmanaged)>
Public Shared Sub MyMethod()
' Call to
SafeOrUnsafeNativeMethodsClass.RanodmWinAPIFunction()
End Sub
其次,我想了解我应该对在类中声明为共享的方法应该使用什么值,这些方法可以从代码的任何部分调用。
一个例子:
' 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
在MethodImplOptions
属性中,MethodImpl
EnumerationI应为该方法设置什么值?
这是一个用户测试,演示内联导致性能不佳:
然而,我不确定内联是否应该指明,我是否应该设置NoOptimization,或者在共享方法的环境中取得最佳性能的价值。
答案 0 :(得分:2)
MSDN:
Unmanaged该方法在非托管代码中实现。
这意味着方法体是非托管代码,而不是它将被编译到它。此标志用于C ++ / CLI程序集。
我说不要使用此属性,JIT应该在需要时自行处理内联(正如您发布的文章中所述)。