.Net库中的许多方法都是用本机代码实现的。那些来自框架本身的标记有[MethodImpl(MethodImplOptions.InternalCall)]
。来自非托管DLL的文件将被标记为[DllImport]
(例如[DllImport("kernel32.dll")]
)。到目前为止,没有任何异常。
但是在编写answer for another question时,我发现有很多方法用[DllImport("QCall")]
标记。它们似乎是.Net的内部实现(例如GC._Collect()
)。
我的问题是:[DllImport("QCall")]
到底是什么意思? [DllImport("QCall")]
和[MethodImpl(MethodImplOptions.InternalCall)]
有什么区别?
最佳答案
这是一种旧思路。由于CoreCLR现在是在GitHub上开源的;如果有人仍在寻找答案,这是official documentation:
然后在子标题中继续:
带有示例:
关于.net - 什么是[DllImport (“QCall”)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9491337/